Ошибка "не найдено" при загрузке файла с помощью jquery и обработчика (ashx)
UploadHandler.ashx по.cs
public class UploadHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
try
{
string dirFullPath = HttpContext.Current.Server.MapPath("~/Uploader/");
string[] files;
int numFiles;
files = System.IO.Directory.GetFiles(dirFullPath);
numFiles = files.Length;
numFiles = numFiles + 1;
string str_image = "";
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))
{
fileExtension = Path.GetExtension(fileName);
str_image = "MyPHOTO_" + numFiles.ToString() + fileExtension;
string pathToSave_100 = HttpContext.Current.Server.MapPath("~/Uploader/") + str_image;
file.SaveAs(pathToSave_100);
}
}
// database record update logic here ()
context.Response.Write(str_image);
}
catch (Exception ac)
{
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
JsCode
/Image Upload code
function sendFile(file) {
var formData = new FormData();
formData.append('file', $('#f_UploadImage')[0].files[0]);
$.ajax({
url: 'UploadHandler.ashx',
type: 'POST',
data: formData,
cache: false,
processData: false,
contentType: false,
success: function(result) {
if (result != 'error') {
var my_path = "Uploader/" + result;
$("#myUploadedImg").attr("src", my_path);
}
},
error: function(err) {
alert(err.statusText);
}
});
}
function callImgUploader() {
var _URL = window.URL || window.webkitURL;
$("#f_UploadImage").on('change', function() {
var file, img;
if ((file = this.files[0])) {
img = new Image();
img.onload = function() {
sendFile(file);
};
img.onerror = function() {
alert("Not a valid file:" + file.type);
};
img.src = _URL.createObjectURL(file);
}
});
}
Примечание: Моя страница Aspx-это другая папка, и Image Folder and UploadHandler.ashx.cs
является ли папка route неправильной?
После запуска ajax request
каждый раз, когда его дают Not-Found
ошибка, как можно ее исправить.
Спасибо.
4 ответа:
Вы не упомянули, какой элемент управления загрузкой вы используете , я предполагаю, что это серверная сторона, и вам нужно получить к нему доступ следующим образом
Изменение
$('#f_UploadImage')
To
$('#<%= f_UploadImage.ClientID %>')
Как вы и сказали
Моя страница Aspx-это другая Папка, папка изображений и UploadHandler.ashx по.cs
Вы должны изменить
url: 'UploadHandler.ashx',
К
url: '/UploadHandler.ashx',
В противном случае он попытается найти
UploadHandler.ashx
в той же папке, что и страница ajax, и даст 404.
Спасибо за все ваши ценные отзывы,
Теперь моя проблема решена., задача в
UploadHandler.ashx
установке<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UploadHandler.ashx.cs" Inherits="Customer.UploadHandler" %>
Наследует значение, не соответствующее моему пространству имен
UploadHandler.ashx.cs
это проблема, теперь ее исправили.Спасибо всем.