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
是路径文件夹错了吗?
每次运行ajax request
后发出Not-Found
错误,如何修复它。
感谢。
答案 0 :(得分:1)
您没有提到您正在使用哪个上传控件,我假设它是服务器端,您需要按如下方式访问它
更改强>
$('#f_UploadImage')
以强>
$('#<%= f_UploadImage.ClientID %>')
答案 1 :(得分:0)
正如你所说
我的Aspx页面是不同的文件夹和图像文件夹以及UploadHandler.ashx.cs
你必须改变
url: 'UploadHandler.ashx',
到
url: '/UploadHandler.ashx',
否则,它会尝试在与ajax页面相同的文件夹中搜索UploadHandler.ashx
并给出404。
答案 2 :(得分:0)
我认为问题在于使用contentType尝试
contentType:&#39; multipart / form-data&#39;,
答案 3 :(得分:0)
Thanks for all of your valuable feedback,
now my problem has been fixed,
problem in UploadHandler.ashx
setting
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UploadHandler.ashx.cs" Inherits="Customer.UploadHandler" %>
inherits value are not matching my UploadHandler.ashx.cs
namespace that's the problem, now its fixed.
Thanks everyone.