使用 Dropzone.js & Laravel 上传 PDF。有的上传成功,有的return是个空对象?

Uploading PDF's using Dropzone.js & Laravel. Some upload successfully, others return an empty object?

我正在尝试使用 Dropzone.js 将一些文件上传到运行 Laravel 4.2 的 PHP 环境。我遇到了一个非常令人困惑的错误,其中 某些 PDF 会成功上传,而其他人不会

当我说有些上传不成功时,我的意思是上传后 Input::all() 中可用的内容:

[file] => Symfony\Component\HttpFoundation\File\UploadedFile Object
    (
        [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
        [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => presskit.pdf
        [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => application/octet-stream
        [size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
        [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 1
        [pathName:SplFileInfo:private] => 
        [fileName:SplFileInfo:private] => 
    )

您会立即注意到,有些事情是错误的:

  1. mimetype 被定义为 application/octect-stream。这表示无法解析实际的 mimetype。
  2. 文件大小为0
  3. 错误是1

然而,在向服务器发出请求期间,我可以非常清楚地看到我的请求是以 application/pdf:

的 mimetype 发送的
-----------------------------6541909715113
Content-Disposition: form-data; name="file"; filename="presskit.pdf"
Content-Type: application/pdf 

这是发送到服务器的数据的开始。在客户端,我可以在所有浏览器中复制它。这是我的 dropzone.js 功能:

Dropzone.options.uploadedFilesDropzone = {
    autoProcessQueue: false,
    maxFilesize: 1024, //MB
    addRemoveLinks: true,
    init: function() {

        var uploadedFilesDropzone = this;

        $('#submit').on('click', function() {
            uploadedFilesDropzone.processQueue();
        });
    }
    successmultiple: function(files, message) {
        var uploadedFilesDropzone = this;
        console.log(files);
        var wereAnyFilesErrored = false;
        $.each(files, function(index, file) {
            if (!message.errors) {
                file.previewElement.classList.add('dz-success');
                console.log(message);
            } else {
                wereAnyFilesErrored = true;
                var node, _i, _len, _ref, _results;
                if (file.previewElement) {
                    file.previewElement.classList.add("dz-error");
                    if (typeof message !== "String" && message.error) {
                        message = message.error;
                    }
                    _ref = file.previewElement.querySelectorAll("[data-dz-errormessage]");
                    _results = [];
                    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
                        node = _ref[_i];
                        _results.push(node.textContent = message);
                    }
                }
            }
        });

        if (wereAnyFilesErrored === true) {
            $.each(files, function(index, file) {
                file.status = 'queued';
                console.log(file);
            });
        }
    }
}

此外,PDF 是否正确上传似乎没有任何区别。一开始我以为可能和保存的PDF版本有关,但是1.4和1.6都可以成功也可以失败。

谁能告诉我这是怎么回事?

一些 php 安装对文件上传有非常严格的限制。它可能只是文档的大小。你能检查一下你的 php.ini 吗?

条目将如下所示:

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M

; Must be greater than or equal to upload_max_filesize
post_max_size = 40M