【问题标题】:Multipart issues with chunking分块的多部分问题
【发布时间】:2014-06-20 05:08:06
【问题描述】:

我正在尝试设置 FineUploader 的测试实现,但遇到了分块问题。我已将调试设置为 true,并且一切似乎都很好,直到我收到以下错误的过程结束:

"[Fine Uploader 5.0.2] 所有块都已上传 0 - 正在完成...." custom.fineuploader-5.0.2.js:207 “[Fine Uploader 5.0.2] 为 0 提交所有块完成请求”custom.fineuploader-5.0.2.js:207 “[Fine Uploader 5.0.2] 为 0 发送 POST 请求” custom.fineuploader-5.0.2.js:207 "[Fine Uploader 5.0.2] 收到响应状态 200,正文:{"error":"服务器错误。不是多部分请求。请将 forceMultipart 设置为默认值 (true)。","uploadName":null,"template":"undefined","category":"undefined"}" custom.fineuploader-5.0.2.js:207 "[Fine Uploader 5.0.2] Finalize success for 0"

底部错误显示“服务器错误。不是多部分请求。请将 forceMultipart 设置为默认值 (true)。”,但据我所知,它已经以这种方式设置。这是我在代码中的内容:

var uploadHandler = $('#fine-uploader').fineUploader({
            debug: true,
            request: {
                endpoint: 'server/endpoint.php',
                forceMultipart: true,
                params: // send the values to backend file (endpoint.php)
                {
                    template:function() {
                        return $("#price_template_id").val();
                    },
                    category:function(){
                        return $("#category_id").val();
                    }
                }
            },
            validation: { // validation for the images uploaded
                allowedExtensions: ['jpeg', 'jpg'],
                sizeLimit: 20971520 // 20 MB = 20 * 1024 * 1024 bytes 20971520
            },
            editFilename: {
                enabled: true
            },
            display: { //display image on upload
                fileSizeOnSubmit: true
            },
            resume: { //enable resume on upload
                enabled: true
            },
            retry: {  //enable retry on upload
                enableAuto: true
            },
            forceMultipart: {
                enabled: true
            },
            chunking: { //enable chunking on upload
                concurrent: {
                    enabled: true
                },
                enabled: true,
                partSize: 200000, //200KB per chunk
                success: {
                    endpoint: 'server/endpoint.php'
                }
            },
            template: "qq-template",
            autoUpload: true, 
            showMessage: function(message) {  //show message if any error occur during uplaod process
                alert(message); 
            }
        })

您可以在此处查看/测试实现:http://web3.instaproofs.com/temp/fineuploaderv3/

关于我做错了什么有什么想法吗?

谢谢!

【问题讨论】:

    标签: javascript file-upload fine-uploader


    【解决方案1】:

    您的服务器未正确处理“所有块完成”的 POST 请求。这不是多部分编码请求。它是在最后一个块成功上传到服务器后由 Fine Uploader 发送的。此 POST 包含一个 URL 编码的消息体,其中包含有关已完成分块文件的信息。您的服务器应该组合与文件关联的所有块,然后做出适当的响应。更多信息请访问http://docs.fineuploader.com/branch/master/features/concurrent-chunking.html#server-side-implications

    【讨论】:

    • 谢谢!我正在使用来自 github 存储库的端点和处理程序,这里:github.com/Widen/fine-uploader-server/tree/master/php/… 我相信这可以处理将各个部分重新组合在一起,但听起来可能缺少一些东西。 FineUploader 是否有任何 完整 示例,可以显示所有内容如何组合在一起?似乎大多数人都对这个上传器有问题,因为真的没有一个完整的例子可以借鉴(很容易找到)。
    • 这是一个非常复杂的上传器,支持大量工作流。是否有涵盖所有可能的服务器端语言和工作流程的服务器端示例?不。不幸的是,考虑到创建所需的时间,这是不现实的。但是,fine-uploader-server GitHub repo 中有许多语言的最常见工作流示例。对于不太常见的工作流程,文档站点上有大量文档,解释了如何以您选择的服务器端语言处理请求...
    • ...您正在使用并发分块,这不是一个常见的功能(而且非常新)。它旨在用于提高非常大的单个文件上传的效率。只需按照我向您指示的文档来处理 Fine Uploader 在使用此工作流程时发送的额外 POST 请求,您应该没问题。您需要做的就是采用示例存储库中的常见服务器端示例之一,并对其进行扩充以处理“所有块完成”的 POST 请求。如果您遇到问题,请务必使用您的服务器代码发布问题。
    • 好吧,我想我现在走对了。 github 中的 PHP 示例不支持并发分块或新的分块成功 POST,因此我需要对其进行扩展并在我的服务器上添加该功能。感谢您的帮助和正确的方向!
    • 我现在一切正常。再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多