带有blueimp jquery文件上传的自定义文件上传按钮

时间:2012-08-23 08:46:16

标签: jquery file-upload blueimp

当我在输入字段中选择文件时,我正在使用jquery文件上传插件上传我的文件。

我想要一个上传文件的cusom提交按钮..

我该怎么做?

标记:

<span>Add File</span>
<input id="fileupload" type="file" multiple="" data-url="upload.ashx" name="files[]" />

<label for="file_name">Name:</label>
<input type="text" name="file_name" id="file_name" />

<input type="button" id="uploadFileBtn" value="Upload" />

Javascript:

$('#fileupload').fileupload(
{
dataType: 'json',
done: function (e, data) {
    alert("success");                               
}
});

3 个答案:

答案 0 :(得分:0)

您的输入是否在同一表格中?

更改代码:

<form id="fileupload" action="someAction" method="POST" enctype="multipart/form-data">
    <span>Add files</span>
    <input type="file" name="files[]" multiple>
    <button type="submit" class="btn btn-primary start">
        <span>Start upload</span>
    </button>
</form>

答案 1 :(得分:0)

<强>解决方案

fileupload有一个ADD事件,一旦选择了文件就会触发。我在ADD事件中编写了click事件,从而覆盖了默认行为。

经过测试,它按预期工作。

解决方案2 - Jquery表单插件

经过一番研究后,我找到了一种更好的方法来处理ajax fileupload。我使用的是Jquery Form Plugin:http://www.malsup.com/jquery/form/

它就像常规表单一样,可以处理文件输入。

答案 2 :(得分:0)

您可以通过挂钩添加事件来实现。在那里,您可以阻止上传者执行其默认行为。 jquery-file-upload -docs解释了这一点,但它有点难以找到。

以下内容写于blueimp basic uploader tutorial

$(function () {
    $('#fileupload').fileupload({
        dataType: 'json',
        add: function (e, data) {
            data.context = $('<button/>').text('Upload')
                .appendTo(document.body)
                .click(function () {
                    data.context = $('<p/>').text('Uploading...').replaceAll($(this));
                    data.submit();
                });
        },
        done: function (e, data) {
            data.context.text('Upload finished.');
        }
    });
});

实际上非常重要的是,您创建的提交按钮不在表单内!