加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Laravel使用AngularJS仅存储来自多个文件上载文件的一个文件

发布时间:2020-12-17 07:54:50 所属栏目:安全 来源:网络整理
导读:早上好或晚上好(这取决于你读这个主题). 我用angular和laravel编写了这段代码来上传多个文件, 但我从请求中获得的只是一个文件对象,而其他所有文件对象都被释放,因此在laravel控制器中不会循环使用foreach并返回undefined. 请给我一个反馈 HTML input ng-fil
早上好或晚上好(这取决于你读这个主题).

我用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()."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);
 }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读