首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery-File-Upload仅用于UI?

jQuery-File-Upload仅用于UI?
EN

Stack Overflow用户
提问于 2013-05-17 04:17:49
回答 1查看 1.3K关注 0票数 1

我想上传多个文件。使用案例是:我的网站上的用户可以上传多张照片。

现在我只是在用

代码语言:javascript
复制
<input type="file" name="myfiles" multiple="multiple">

这个很好用,但我想要更多。我想要一个很好的界面,显示用户什么是上传的,并让它更清楚哪些文件正在上传。

代码语言:javascript
复制
https://github.com/blueimp/jQuery-File-Upload

所以这个blueimp jquery文件上传脚本有漂亮的UI,这正是我想要的。然而,有几个问题:

1)我想提交表单到一个php文件,它将决定文件是否被上传。

2)我的表单有许多(许多..)其他字段。我想通过简单的老式提交按钮提交这与我的表格其余部分。这个是可能的吗?

如果没有,有人能推荐一个更好的选择吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-05-17 07:11:03

使用blueimp文件上传插件可以实现上述所有功能。

1)决定是否上传文件

使用插件中的add:选项向添加了文件名的服务器发出单独的ajax调用,并使用响应来过滤要上传的文件列表。

2)将表单中的其他数据添加到上传

使用插件中的formData:选项添加表单中的其他字段,以便在提交时传递给服务器。

因此,类似于以下内容:

代码语言:javascript
复制
$('#fileupload').fileupload({
        url: url,
        dataType: 'json',
        autoUpload: false,
        acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
        maxFileSize: 5000000, // 5 MB
        loadImageMaxFileSize: 15000000, // 15MB
        formData: $("#myForm").serializeArray()
    }).on('fileuploadadd', function (e, data) {
        data.context = $('<div/>').appendTo('#files');

        $.ajax(
               url: "/checkfiles",
               data: { files: data.files },
               success: function(result) {
                  // assume server passes back list of accepted files
                  $.each(result.files, function (index, file) {
                    var node = $('<p/>')
                       .append($('<span/>').text(file.name));
                    if (!index) {
                      node
                        .append('<br>')
                        .append(uploadButton.clone(true).data(data));
                    }
                    node.appendTo(data.context);
                  });
               }
    }).on('fileuploadprocessalways', function (e, data) {
        var index = data.index,
            file = data.files[index],
            node = $(data.context.children()[index]);
        if (file.preview) {
            node
                .prepend('<br>')
                .prepend(file.preview);
        }
        if (file.error) {
            node
                .append('<br>')
                .append(file.error);
        }
        if (index + 1 === data.files.length) {
            data.context.find('button')
                .text('Upload')
                .prop('disabled', !!data.files.error);
        }
    }).on('fileuploaddone', function (e, data) {
        $.each(data.result.files, function (index, file) {
            var link = $('<a>')
                .attr('target', '_blank')
                .prop('href', file.url);
            $(data.context.children()[index])
                .wrap(link);
        });
    }).on('fileuploadfail', function (e, data) {
        $.each(data.result.files, function (index, file) {
            var error = $('<span/>').text(file.error);
            $(data.context.children()[index])
                .append('<br>')
                .append(error);
        });
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16596687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档