我想使用jquery文件上传插件取消单个文件。我想用核心插件来做,不需要所有UI的东西。
在我的本地文件系统上选择文件之后,文件位于哪里?
答案 0 :(得分:7)
我在我的项目中这样做:为每个文件添加上传和取消按钮
$('#TestForm').fileupload({
dataType : 'json',
autoUpload : false,
add : function(e, data) {
var file=data.files[0];
var vOutput="";
vOutput+="<tr><td>"+file.name+"</td>"
vOutput+="<td><input type='button' class='fileUpload' value='upload'></td>"
vOutput+="<td><input type='button' class='fileCancel' value='cancel'></td></tr>"
$("#TestTable").append(vOutput)
$(".fileUpload").eq(-1).on("click",function(){
data.submit();
})
$(".fileCancel").eq(-1).on("click",function(){
$(this).parent().parent().remove()
})
}
})
如果你想要,你也可以添加按钮来上传或取消所有文件:
$("#fileUploadAll").on("click", function() {
$(".fileUpload").click(); // click all upload buttons
})
$("#fileCancelAll").on("click", function() {
$(".fileCancel").click(); //click all cancel buttons
})
HTML:
<form id='TestForm'>
<input type="file" id="FileSelect" name="files[]" data-url="yourURL.php" multiple/>
<input type="button" value="upload all" id="fileUploadAll"/>
<input type="button" value="cancel all" id="fileCancelAll"/>
<table id='TestTable'></table>
</form>
答案 1 :(得分:1)
如果您不想覆盖添加方法,请在此处提及另一个选项:Add cancel upload or abort functionality to bootstrap multiple file upload plugin
$('#fileupload').bind('fileuploadadd', function(e, data){
var jqXHR = data.submit(); // Catching the upload process of every file
$('#cancel_all').on('click',function(e){
jqXHR.abort();
});
});
它使用从submit方法返回的jqXHR对象。只是不要忘记关闭autoupload设置。如果您不想取消所有上传,请务必将click事件附加到该文件的相应元素。
答案 2 :(得分:0)
我有一个案例,我们需要运行检查以查看服务器上是否已存在所选文件,并提供覆盖它的选项。如果用户选择不覆盖该文件,那么我们不希望将文件上传到服务器,但是如果他们改变主意,请将其保留在队列中,即不要删除整个tr。
要完成此操作,您只需将disabled
属性添加到要阻止上传的tr中的开始按钮即可。 jQuery fileupload将正常流失队列,并忽略任何具有禁用启动按钮的行。