Blueimp使用表单数据上传多个块

时间:2014-02-24 04:48:31

标签: javascript php jquery file-upload blueimp

我想要使用表单数据上传多个文件。将表单数据保存到数据库并将图像保存到perticualr文件夹。

我正在使用blueimp上传here is my Fiddle

我正在使用的JavaScript编码

$(function () {
    $('#fileupload').fileupload({
        maxChunkSize: 5000,
        previewMaxHeight: 210,
        previewMaxWidth: 210,
        url: '/echo/json'
    });
    $('#fileupload').bind('fileuploadsubmit', function (e, data) {
        var inputs = data.context.find(':input');
        if (inputs.filter('[required][value=""]').first().focus().length) {
            return false;
        }
        data.formData = inputs.serializeArray();
    });
});

块上传工作正常,但如果我将数据保存到数据库,则会创建多个条目。 在数据库中创建的条目数等于上传的数字块。

enter image description here

我正在使用的PHP代码是(借助blueimp PHP class https://github.com/blueimp/jQuery-File-Upload/blob/master/server/php/UploadHandler.php

public function postUpload()
{
    $upload_handler = new UploadHandler(); // Blueimp class

    $this->file->create(Input::all()); // This code is executed multiple times

}

所以主要的麻烦是$this->file->create(Input::all());代码执行多次,因为上传的数据块数量,我希望它在成功上传文件时执行一次。

还要命名上传文件的文件以将其保存到数据库。

1 个答案:

答案 0 :(得分:3)

您需要先上传所有块,然后在最后一个块上执行您自己的逻辑。所以这就是你如何做到这一点。

您应首先从http标头Content-Range中提取范围信息。您可以查看this answer了解具体方法。然后你应该检查那是否是最后一块。

如果它是最后一个块,那么你就可以在那里执行你的业务逻辑。

即使这是一个迟到的答案,也可能对某人有帮助。