我尝试修改“添加”功能,除了在所有 Internet Explorer 浏览器中选择的文件没有出现在输入框中之外,它有点工作。另外,根据我的经验,如果您在单击按钮之前多次更改它,所有文件都会上传。这对我有用:1. 不要立即实例化 blueimp fileupload 对象 2. 创建一个基本上实例化 fileupload 对象的函数 3. 将上面#2 中的函数附加到按钮单击我意识到下面的代码中有一些冗余. 我也强制 IframeTransport,你可能可以做一个浏览器检查。您也可以在浏览器中检查添加功能,例如,您可以使用“fileInput”,对于其他所有人,您可以使用“file”。这对我来说在所有浏览器中都很好,除了进度条,
<script>
$(function () {
/*do your jquery stuff here, but do not call fileupload*/
$("btnUpload").click(function(){
/*i can add additional post params*/
/*some of this is redundant*/
var post = Array({name:"hello", value:"there"});
uploadFileOnClick("fileupload", $("#fileupload") ,post, true);
});
});
function uploadFileOnClick(id, file, post, _autoUpload) {
$('#'+id).fileupload({
dataType: 'json',
multipart: true,
autoUpload: true,
formData: post,
forceIframeTransport: true,
progress: function (e, data) {
/*insert progress code here*/
},
done: function (e, data) {
/*insert your code here*/
}
});
if (_autoUpload) {
$('#'+id).fileupload('add', {files: file});
}
}
</script>
<body>
<form method="post" enctype="multipart/form-data">
<input type="file" id="fileupload" name="somename" data-url="yourserver.php?goeshere=true"/>
</form>
<!-- i use a link in my case, it will work if you use a button in the form as well-->
<a href="javascript:void(0);" id="btnUpload">Upload</a>
</body>