Recherche…


Paramètres

Param / Fonction La description
téléchargement de fichiers nom du champ <input> du fichier
$ sampleName pourrait également être une chaîne générée dynamiquement ou le nom du fichier téléchargé par l'utilisateur
app_path () est l'aide de Laravel pour fournir le chemin absolu à l'application
getCLientOriginalExtension () Wrapper Laravel pour récupérer l'extension du fichier téléchargé par l'utilisateur tel qu'il était sur la machine de l'utilisateur

Génération de noms de fichiers horodatés pour les fichiers téléchargés par les utilisateurs.

Ci-dessous ne fonctionnera pas sur une machine Windows

$file = $request->file('file_upload');
$sampleName = 'UserUpload';
$destination = app_path() . '/myStorage/';
$fileName = $sampleName . '-' . date('Y-m-d-H:i:s') . '.' . 
$file->getClientOriginalExtension();
$file->move($destination, $fileName);  

Il va lancer une erreur comme "Impossible de déplacer le fichier vers / path ..."

Pourquoi? - Cela fonctionne parfaitement sur un serveur Ubuntu
La raison en est que, sous le colon ':' Windows, colon ':' n'est pas autorisé dans un nom de fichier où il est autorisé sur Linux. C'est tellement petit que nous ne le remarquons peut-être pas dès le départ et que nous nous demandons pourquoi un code qui fonctionne bien sur Ubuntu (Linux) ne fonctionne pas.
Notre première intuition serait de vérifier les autorisations de fichiers et des choses comme ça, mais nous ne remarquons peut-être pas que les colon ':' sont le coupable ici.
Donc, pour télécharger des fichiers sous Windows, n'utilisez pas les colon':' lors de la génération des noms de fichiers horodatés , faites plutôt quelque chose comme ci-dessous:

$filename = $sampleName . '-' . date('Y-m-d-H_i_s') . '.' . $file->getClientOriginalExtension();  //ex output UserUpload-2016-02-18-11_25_43.xlsx
            
                                   OR

$filename = $sampleName . '-' .date('Y-m-d H i s') . '.' . $file->getClientOriginalExtension();  //ex output UserUpload-2016-02-18 11 25 43.xlsx

                                   OR

$filename = $sampleName . '-'.date('Y-m-d_g-i-A').'.' . $file->getClientOriginalExtension(); //ex output UserUpload-2016-02-18_11-25-AM.xlsx


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow