Laravel使用AngularJS仅存储来自多个文件上载文件的一个文件
发布时间:2020-12-17 07:54:50 所属栏目:安全 来源:网络整理
导读:早上好或晚上好(这取决于你读这个主题). 我用angular和laravel编写了这段代码来上传多个文件, 但我从请求中获得的只是一个文件对象,而其他所有文件对象都被释放,因此在laravel控制器中不会循环使用foreach并返回undefined. 请给我一个反馈 HTML input ng-fil
早上好或晚上好(这取决于你读这个主题).
我用angular和laravel编写了这段代码来上传多个文件, 请给我一个反馈 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()."appfile",$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()."appfile",$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--
Laravel有商店功能使用这个
foreach ($request->file as $file) { $filename = $file->store('folder'); } 这里的文件夹是storage / app / folder 你需要像这样更改FormData,你必须在FormData中添加file []数组 for (let i = 0; i < obj.file.length; i++) { let f = obj.file[i]; fd.append('file[]',f); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |