jquery - Laravel,jQuery 文件上传错误 - "Call to a member function store() on array"

标签 jquery laravel file upload blueimp

我使用这个库上传文件https://github.com/blueimp/jQuery-File-Upload

当我尝试上传文件时,出现错误:“调用数组上的成员函数 store()” 似乎 $request->files< 存在问题 变量。当 is 被传递给 foreach 循环时,它不会返回正确的索引。

感谢您的帮助。

Controller

public function upload(Request $request) {
      foreach($request->files as $file) {
        $filename = $file->store('library');
      }
    }

dd($request->files) 的输出

FileBag {#68
  #parameters: array:1 [
    "files" => array:1 [
      0 => UploadedFile {#45
        -test: false
        -originalName: "img_(17).jpg"
        -mimeType: "image/jpeg"
        -size: 1260662
        -error: 0
        path: "D:\xampp\tmp"
        filename: "phpD7B1.tmp"
        basename: "phpD7B1.tmp"
        pathname: "D:\xampp\tmp\phpD7B1.tmp"
        extension: "tmp"
        realPath: "D:\xampp\tmp\phpD7B1.tmp"
        aTime: 2018-05-30 16:10:02
        mTime: 2018-05-30 16:10:02
        cTime: 2018-05-30 16:10:02
        inode: 0
        size: 1260662
        perms: 0100666
        owner: 0
        group: 0
        type: "file"
        writable: true
        readable: true
        executable: false
        file: true
        dir: false
        link: false
        linkTarget: "D:\xampp\tmp\phpD7B1.tmp"
      }
    ]
  ]
}

当我在 foreach 循环中的 Controller 中使用 var_dump($file) 时的响应。

array(1) {
  [0]=>
  object(Symfony\Component\HttpFoundation\File\UploadedFile)#45 (7) {
    ["test":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
    bool(false)
    ["originalName":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
    string(12) "zdjęcie.jpg"
    ["mimeType":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
    string(10) "image/jpeg"
    ["size":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
    int(7445)
    ["error":"Symfony\Component\HttpFoundation\File\UploadedFile":private]=>
    int(0)
    ["pathName":"SplFileInfo":private]=>
    string(24) "D:\xampp\tmp\php7175.tmp"
    ["fileName":"SplFileInfo":private]=>
    string(11) "php7175.tmp"
  }
}

查看

<div id="dropZone">
  <h1>Drag & Drop Files...</h1>
  <input type="file" id="fileupload" name="files[]" multiple>
</div>
<h1 id="error"></h1><br><br>
<h1 id="progress"></h1><br><br>
<div id="files"></div>

<script>
$(function () {
   var files = $("#files");

   $("#fileupload").fileupload({
       url: '{{ route("libraryUpload") }}',
       dropZone: '#dropZone',
       dataType: 'json',
       autoUpload: false,
       headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
   }).on('fileuploadadd', function (e, data) {
       var fileTypeAllowed = /.\.(gif|jpg|png|jpeg)$/i;
       var fileName = data.originalFiles[0]['name'];
       var fileSize = data.originalFiles[0]['size'];

       if (!fileTypeAllowed.test(fileName))
            $("#error").html('Only images are allowed!');
       else if (fileSize > 5000000)
           $("#error").html('Your file is too big! Max allowed size is: 5MB');
       else {
           $("#error").html("");
           data.submit();
       }
   }).on('fileuploaddone', function(e, data) {
        var status = data.jqXHR.responseJSON.status;
        var msg = data.jqXHR.responseJSON.msg;

        if (status == 1) {
            var path = data.jqXHR.responseJSON.path;
            $("#files").fadeIn().append('<p><img style="width: 100px; height: 100px;" src="'+path+'" /></p>');
        } else
            $("#error").html(msg);
   }).on('fileuploadprogressall', function(e,data) {
        var progress = parseInt(data.loaded / data.total * 100, 10);
        $("#progress").html("Completed: " + progress + "%");
   });
});
</script>

最佳答案

尝试在 foreach 循环中 var_dump '$file' 以便您可以了解它的类型

关于jquery - Laravel,jQuery 文件上传错误 - "Call to a member function store() on array",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50609324/

相关文章:

javascript - 如何从javascript数组中选择特定字段

jquery - 使用 JQuery 和 Jquery-svg 可拖动 SVG

jquery - 未捕获的类型错误 : Illegal constructor when trying to use jQuery

php - Carbon 解析日期格式

php - 更改 Laravel 的 created_at 和 updated_at 的名称

java - 文件的最后修改时间是一个 13 位数字。这是什么意思?

从文本文件创建 C 线程

javascript - 如何在表单中发布ajax响应

c# - Linq - 使用 not "IN"运算符从文本文件中选择非重复行

laravel - '包 zendframework/zend-diactoros 被放弃,你应该避免使用它。使用 laminas/laminas-diactoros 代替。