我的MVC3应用程序中有一个ajax文件上传器,它在Firefox和Chrome中运行得非常好,但它在IE9和IE8中不起作用。当我上传文件时,它在IE中的服务器端给我错误的文件名。
这是我的up-loader代码
<script type="text/javascript">
function InitializeUploader() {
Dname = [];
var uploader = new qq.FileUploader({
multiple: true,
element: document.getElementById('file-uploader'),
action: '@Url.Action("UploadDocument","Project")',
debug: true,
params: { id: $("#Id").val() },
onSubmit: function (id, fileName) {
},
onComplete: function (id, fileName, responseJSON) {
alert(responseJSON.fileName);
$("#DocumentName").val(responseJSON.fileName);
fileSize = responseJSON.size;
Dname.push(responseJSON.fileName);
type = responseJSON.type;
}
});
}
</script>
<form method="post" enctype="multipart/form-data" action="" style="margin-left: 4px;
margin-top: 0px;" id="documentUploadForm">
<div id="file-uploader">
<input type="file" id="uplodfile" />
<input class="button" type="button" value="Upload" id="UploadDocbtn" style="float: right;
width: 100px;" /></div>
</form>
服务器端操作
[HttpPost]
public ActionResult UploadDocument(string qqfile, int id)
{
// code for saving File
}
当我在IE中运行此代码而不是在 qqfile 参数中提供文件名时,它会给我像 System.Web.HttpPostedFileWrapper 这样的文件,并且文件也无法正确保存。 我没有得到这个浏览器问题或IE阻止一些脚本。 那么我如何在IE中使用ajax文件加载器保存文件?
答案 0 :(得分:1)
实际上,IE看起来应该像它应该的那样工作。
而不是UploadDocument(string qqfile, int id)
你应该UploadDocument(HttpPostedFileWrapper qqfile, int id)
文件应保存为qqfile.SaveAs("path to file")
不清楚您现在获得了什么文件名。可能这是转换HttpPostedFile
到字符串的结果,并且IE不返回该转换返回文件名而不是原始对象类型所需的一些信息。
尝试做这样的事情:
[HttpPost]
public ActionResult UploadDocument(System.Web.HttpPostedFileWrapper qqfile, int id)
{
qqfile.SaveAs("filename");
// code for saving File
}
它应该可以在所有浏览器中正常工作