簡體   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