繁体   English   中英

无法从 Laravel 中的 JQuery Ajax 请求接收文件

[英]Can't receive files from JQuery Ajax request in Laravel

当尝试上传文件 CSV / Excel 文件并在 ajax 请求中接收它时,它没有按预期工作。

我使用 formdata object 上传文件,如下所示:

      const formData = new FormData()
            formData.append('file', file)
            //upload the file to the server
            Api.makeRequest('uploadFromFile', {
                processData: false,
                contentType: false,
                enctype: 'multipart/form-data',
                cache: false,
                data: formData,
               complete: function (xhr) {
                    if(xhr.status === 201 || xhr.status === 200){
                        console.log(xhr.responseJSON)
                    }else {
                        alert('error')
                        console.error(xhr.responseJSON)
                    }
               }
            })

正如我从文档中读到的,您必须像这样提取它:

$file = $request ->file('file_key')

使用此语法时,出现错误,并且 Laravel 无法提取文件:

    public function uploadFromFile(Request $request){
        if($request->hasFile('file')){
        $file = $request->file('file');
        return $file;
        }else{
            return response()->json(['error' => 'No file uploaded'], 400);
        }

但是,当我使用常规request->has() function 时,它工作正常。 返回类型只是 object。 由于我无法以正确的格式获取文件,我做错了什么?


//This works, getting some data but not a proper file object
    public function uploadFromFile(Request $request){
        if($request->has('file')){
        $file = $request->get('file');
        return $file;
        }else{
            return response()->json(['error' => 'No file uploaded'], 400);
        }

 <script> var droppedFiles=''; //input file change event to call this function function FileUpload(e) { droppedFiles = e.target.files || e.dataTransfer.files; } $('#FrmId').on('submit', function (e) { var $form = $('#FrmId'); var $input = $form.find('input[type="file"]'); var form_data = new FormData($('#FrmId')[0]); if (droppedFiles) { $.each( droppedFiles, function(i, file) { form_data.append( $input.attr('name'), file ); }); } $.ajax({ type: "POST", enctype: "multipart/form-data", url: "url", data: form_data, contentType: false, cache: false, processData: false, }).done(function (data) { }).fail(function () { }); return false; }); </script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM