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