Я хочу загрузить изображение в папку, используя javascript и универсальный обработчик на c#

#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. Не могли бы вы мне помочь?