#javascript #c# #ajax #handler #httpcontext
#javascript #c# #ajax #обработчик #httpcontext
Вопрос:
function ajaxFileUpload(mode) {
var fupl = 'fileToUpload';
var fileName = $('#fileuploadbrand').val();
if (fileName == "" || fileName == null)//if user doesn't select an image
{
alert('Please Select An image');
}
else {
var vars = fileName.split("."); //get file extension.
if (vars[1].toString().toLowerCase() != "jpg")
{//check the file extension.
alert('The image format is not valid !');
return false;
}
$.ajax({
type: 'POST',
url: '../handlers/BandPictureHandler.ashx',
data: { Action: mode },
cache: false,
fileElementId: 'fileToUpload',
contentType: false,
processData: false,
success: function (data) {
if (data.result == "successed")
alert('Image Uploaded');
},
error: function (data) {
console.log("error");
console.log(data);
}
});
}
return false;
}
Это мой код javascript. При использовании отладки я вижу, что файл
поступает, и он также попадает в обработчик. Но в обработчике он не переходит к «новому» регистру. Он всегда перенаправляет на регистр по умолчанию. Ниже я привожу код обработчика. Пожалуйста, помогите сохранить изображение в папке с помощью javascript. Если есть какой-либо простой шаг, вы также можете предложить его мне.
общедоступный класс BandPictureHandler: IHttpHandler {
public void ProcessRequest(HttpContext context)
{
HttpRequest request = context.Request;
HttpResponse response = context.Response;
string action = request["Action"];
switch (action)
{
case "NEW":
string result = "failed";
try
{
string fileName = SaveCaper(context);
result = "successed";
response.Write("{"result":" result.ToString().ToLower() "}");
}
catch
{
response.Write("{"result":" result.ToString().ToLower() "}");
}
break;
default:
break;
}
}
private string SaveCaper(HttpContext context)
{
string fileName = string.Empty;
string path = context.Server.MapPath("~/assets/media/brand/");
if (!Directory.Exists(path))
Directory.CreateDirectory(path);
try
{
var file = context.Request.Files[0];
if (HttpContext.Current.Request.Browser.Browser.ToUpper() == "IE")
{
string[] files = file.FileName.Split(new char[] { '\' });
fileName = files[files.Length - 1];
}
else
{
fileName = file.FileName;
}
string strFileName = fileName;
fileName = Path.Combine(path, fileName);
try
{
file.SaveAs(fileName);
}
catch (Exception exp)
{
//log the exception
}
}
catch (Exception exp)
{
//log the exception
}
return fileName;
}
public bool IsReusable {
get {
return false;
}
}
}
Комментарии:
1. Вы заглянули в сетевой инструмент вашего браузера, изучили запрос и проверили, какое значение отправляется для поля «Действие»?
2. Нет в действии, я получаю null
3. На стороне сервера или на стороне клиента? Если на стороне клиента значение равно null, вам нужно вернуться к коду, который выполняет функцию AjaxFileUpload(), и посмотреть, какое значение он передает для
mode
параметра.4. Нет, я получаю только обработчик, и он находится на сайте сервера
5. Не могли бы вы мне помочь?