Télécharger plusieurs fichiers dans Laravel 4
Voici mon code de contrôleur pour le téléchargement de plusieurs fichiers, et je suis de passage clé et la valeur de 'facteur' API rest client sur Google Chrome. Je suis l'ajout de plusieurs fichiers à partir de postier, mais seulement 1 fichier est télécharger.
public function post_files() {
$allowedExts = array("gif", "jpeg", "jpg", "png","txt","pdf","doc","rtf","docx","xls","xlsx");
foreach($_FILES['file'] as $key => $abc) {
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);
$filename= $temp[0];
$destinationPath = 'upload/'.$filename.'.'.$extension;
if(in_array($extension, $allowedExts)&&($_FILES["file"]["size"] < 20000000)) {
if($_FILES["file"]["error"] > 0) {
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
}
if (file_exists($destinationPath)) {
echo $filename." already exists. ";
} else {
$uploadSuccess=move_uploaded_file($_FILES["file"]["tmp_name"],$destinationPath);
if( $uploadSuccess ) {
$document_details=Response::json(Author::insert_document_details_Call($filename,$destinationPath));
return $document_details; //or do a redirect with some message that file was uploaded
//return Redirect::to('authors')
} else {
return Response::json('error', 400);
}
}
}
}
}
J'ai essayé ce code mais il me renvoie l'emplacement d'un fichier dans le dossier temporaire
$file = Input::file('file');
echo count($file);
et
echo count($_FILES['file']);
me renvoie toujours 5.Quelqu'un peut me dire pourquoi?
et pourquoi foreach(Input::file('file') as $key => $abc)
donne l'erreur invalid arguments
OriginalL'auteur richa | 2013-08-13
Vous devez vous connecter pour publier un commentaire.
Pas en utilisant une API, mais ce pourrait décrire le principe.
De mettre en place ce routes.php fichier, auquel vous aidera à télécharger des test.
routes.php
Avis le nom de l'entrée, des fichiers[]: Si le téléchargement de plusieurs fichiers sous le même nom, comprenant des crochets.
OriginalL'auteur Andreyco
Solution:
Vous pouvez obtenir tous les fichiers simplement en faisant:
Explication:
La classe
Input
est en fait une Façade pour leIlluminate\Http\Request
classe (Oui, tout comme leRequest
façade - ils à la fois servir le "Visage" de la même classe!**).Cela signifie que vous pouvez utiliser toutes les méthodes disponibles sur Demande .
Si l'on recherche la fonction
file()
, nous voyons qu'il fonctionne comme ceci:Maintenant,
retrieveItem()
est une méthode protégée, donc on ne peut pas appeler à partir de notre Contrôleur directement. Au fond, cependant, nous voyons que nous ne pouvons passer à lafile()
méthode "null" pour la clé. Si nous le faisons, alors nous aurons tous les éléments!Donc, si nous appelons
Input::file()
, la Demande de la classe en interne exécuter$this->retrieveItem('files', null, null)
, qui à son tour exécuterreturn $this->files->all();
et nous aurons tous les fichiers téléchargés.** À noter que
Input
Façade est la méthode supplémentaire () disponibles.OriginalL'auteur fideloper
les solutions ci-dessus l'habitude de travailler avec plusieurs fichiers comme le retour du feu dès le premier élément sera validé ,voici donc une solution après plusieurs heures de tête-à-mur de frapper. inspiré par https://www.youtube.com/watch?v=PNtuds0l8bA
u d'abord enregistrer les noms de fichiers dans un tableau et passer ces tableaux à une session, puis seulement ajouter
return
quand la boucle est terminée.OriginalL'auteur ctf0
1. Forme :-
Formulaire d'ouverture de la balise doit être ‘fichiers’=>vrai et le champ fichier doit avoir un nom [](avec tableau) et ‘multiple’=>true
2. Ajouter le code ci-dessous à votre fonction de contrôleur :-
SOURCE : http://tutsnare.com/upload-multiple-files-in-laravel/
EDIT: source de la Référence de lien ne fonctionne pas.
L'URL de la source de maintenant redirige vers certains domaines parqués, pour info.
Désolé, l'URL de Référence n'est pas de travail. Vous pouvez demander si vous rencontrez des problèmes avec le code.
OriginalL'auteur Vishal Tarkar