我有一个简单的脚本使用HTML5 FormData上传文件,它在大多数HTML5支持的浏览器上工作良好(我测试了Chrome, FireFox, Opera和IE10 Metro)。唯一不工作的浏览器是在IE10桌面上,问题是文件从未上传,在服务器端Request.Files.Count
总是零。
知道为什么吗,或者这只是IE10桌面的bug?
脚本如下:
<input type="file" id="fileInput" multiple="true"/>
<button type="button" id="uploadButton">Upload</button>
<div>
<span>Status: </span> <strong id="status"></strong>
</div>
<script src="~/Scripts/jquery-1.9.1.js"></script>
<script type="text/javascript">
var files = [];
$(document).ready(function() {
$('#fileInput').change(function (e) {
// Add all selected files to 'files' array
$.each(e.target.files, function(i, item) {
files.push(item);
});
});
$('#uploadButton').click(function () {
// Put files to FormData
var formData = new FormData();
$.each(files, function(i, item) {
formData.append('X-FILE-' + i, item);
});
// Send FormData to server
$.ajax({
url: '/home/upload',
data: formData,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function (data) {
if (data == "YES") {
$('#status').text("File Uploaded");
} else {
$('#status').text("File NOT Uploaded");
}
}
});
});
});
</script>
服务器端代码捕获'/home/upload'操作:
[HttpPost]
public ActionResult Upload()
{
var success = Request.Files.Count > 0;
return Content(success ? "YES" : "NO");
}
我还将我的代码推送到我在Github上的公共存储库https://github.com/budiadiono/IE10VSHtml5上。
提前感谢!
我确定这是IE 10 Desktop的错误。来自Telerik http://demos.telerik.com/aspnet-ajax/asyncupload/examples/overview/defaultcs.aspx的演示不能在IE 10桌面上工作,但在IE 10 Metro上工作得很好。
更具体地说,下面是IE 10桌面版:
Version: 10.0.9200.16540
Update Versions: 10.0.4 (KB2817183)
Product ID: 00150-20000-00003-AA459