早上好或晚上好(这取决于你读这个主题).
我用angular和laravel编写了这段代码来上传多个文件,
但我从请求中获得的只是一个文件对象,而其他所有文件对象都被释放,因此在laravel控制器中不会循环使用foreach并返回undefined.
请给我一个反馈
HTML
<input ng-file-model = "files" value="Seleziona file" type="file" name = "file[]" class="btn btn-info btn-s" multiple />
控制器(AngularJS)
$scope.upload = function(){ var obj = {}; obj.pratica = $scope.pra.id; obj.cliente = $scope.cliente.id; obj.tipoDoc = $scope.getTipoDoc; obj.file = $scope.files; dati.uploadFile(obj) .success(function(result){ $rootScope.stampaGritter(result.message,"success"); }) .error(function(result){ $rootScope.stampaGritter(result.message,"error"); }); };
app.directive('ngFileModel',['$parse',function ($parse) { return { restrict: 'A',link: function (scope,element,attrs) { var model = $parse(attrs.ngFileModel); var isMultiple = attrs.multiple; var modelSetter = model.assign; element.bind('change',function () { angular.forEach(element[0].files,function (item) { scope.files.push(item); }); scope.$apply(function () { if (isMultiple) { modelSetter(scope,scope.files); } else { modelSetter(scope,scope.files[0]); } }); }); } }; }]);
uploadFile: function(obj) { var fd = new FormData(); angular.forEach(obj.file,function(item) { fd.append('file',item); }); fd.append('tipo_doc',obj.tipoDoc); fd.append('cliente',obj.cliente); fd.append('pratica',obj.pratica); $http.post( "api/storeFile",fd,{ transformRequest: angular.identity,headers: {'Content-Type': undefined } }) },
控制器(Laravel)
public function storeFile(Request $request) { /*$file = $request->file('file'); $filename = $file->getClientOriginalName(); $guid = $this->getGUID(); $file->move(storage_path()."\\app\\file",$guid); $response = [ "file" => $filename,"GUID" => $guid ]; $file = new Documenti($response); $file->save();*/ $cli = $request->input('cliente'); $pra = $request->input('pratica'); $tipoDoc = $request->input('tipo_doc'); $files = $request->file('file'); dd($files); foreach($files as $file) { $guid = $this->getGUID(); $file->move(storage_path()."\\app\\file",$guid); $response = [ 'cliente_id' => $cli,'pratica_id' => $pra,'tipo_id' => $tipoDoc,'file' => $file->getClientOriginalName(),'GUID' => $guid ]; $file = new Documenti($response); $file->save(); } return response()->json($response); }
当打印dd($files)时
请求有效负载:
------WebKitFormBoundary1yzFmBAy2rTa73eV Content-Disposition: form-data; name="file"; filename="autorizzazioni2.CSV" Content-Type: application/octet-stream ------WebKitFormBoundary1yzFmBAy2rTa73eV Content-Disposition: form-data; name="file"; filename="bustapaga.pdf" Content-Type: application/pdf ------WebKitFormBoundary1yzFmBAy2rTa73eV Content-Disposition: form-data; name="tipo_doc" 7 ------WebKitFormBoundary1yzFmBAy2rTa73eV Content-Disposition: form-data; name="cliente" 2 ------WebKitFormBoundary1yzFmBAy2rTa73eV Content-Disposition: form-data; name="pratica" 2 ------WebKitFormBoundary1yzFmBAy2rTa73eV--