我正在使用ajax和ashx文件上传文件,并且该文件在Internet Explorer(IE11)之外的其他浏览器中也能正常工作,我也已经在网上搜索并尝试了不同的建议,但仍然失败。
这是我的Ajax代码:
function uploadFile() {
var formData = new FormData();
formData.append('file', $('#fileupload')[0].files[0]);
$.ajax({
type: 'post',
url: 'fileUploader.ashx',
data: formData,
success: alert("Success!"),
processData: false,
cache: false,
contentType: false,
error: function () {
alert("Something went wrong!");
}
});
}
这是我的ashx代码:
public class fileUploader : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
try
{
string dirFullPath = HttpContext.Current.Server.MapPath("~/Attachment_/");
string[] files;
files = System.IO.Directory.GetFiles(dirFullPath);
string str_file = "";
foreach (string s in context.Request.Files)
{
HttpPostedFile file = context.Request.Files[s];
string fileName = file.FileName;
string fileExtension = file.ContentType;
if (!string.IsNullOrEmpty(fileName))
{
//save to path
fileExtension = Path.GetExtension(fileName);
str_file = "Attachment_" +fileName;
string pathToSave = HttpContext.Current.Server.MapPath("~/Attachment_/") + str_file;
file.SaveAs(pathToSave);
}
}
context.Response.Write(str_file);
}
catch (Exception)
{
throw;
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
我哪里出错了?我在其他浏览器上特别是chrome上尝试并测试了此代码,以上代码可以正常工作,但在IE上失败。它也不会引发任何错误,并显示alert("Success")
消息,但是文件没有被上传。预先感谢您的帮助。
代替使用
string fileName = file.FileName;
使用
Path.GetFileName(file.FileName)