Загрузка файлов с использованием Ajax и Ashx не работает в IE
Я загружаю файл, используя файлы 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")
сообщение, но файл не загружается. Заранее спасибо за помощь.
0 ответов
Вместо того, чтобы использовать
string fileName = file.FileName;
использовать
Path.GetFileName(file.FileName)