蓝色小恶魔多块上传与表单数据

3
我希望能够使用表单数据来批量上传多个文件。将表单数据保存到数据库中,并将图像保存到特定的文件夹中。
我正在使用blueimp upload 这里是我的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类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个回答

3
你需要先上传所有块,然后在最后一个块上执行自己的逻辑。这里是如何做到这一点的方法。
你应该首先从http头中提取范围信息Content-Range。你可以参考这个答案。然后你应该检查是否是最后一个块。
如果是最后一个块,那么就简单地在那里执行你的业务逻辑。
即使这是一个晚回答,它也可能会帮助到某个人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接