Как скачать файл, расположенный в папке проекта, используя ajax и WebMethod? - PullRequest
0 голосов
/ 01 октября 2019

Привет, сообщество. У меня возникла следующая проблема. Надеюсь, вы заранее поможете мне, большое спасибо.

Моя проблема заключается в загрузке файла, специально предназначенного для Excel, путем отправки имени файла с помощью jquery ajax. и пытается загрузить его с помощью c # внутри webMethod.

Он не помечает мне никаких ошибок, но и не загружает файл, он показывает его мне только в модальном режиме с редкими символами.

Что мне показывает следующее:

Jܲ@5��*Q>�ēƪc[�ii����B�j7���{2��h�nm���ƻR����U^7/���%��rZY�@1__�f�...

Это мой код ajax.

 function descargar_archivo_excel() {

         var archivo_descargar = nombre_archivo; 
        
        if (nombre_archivo != "") {
            $.ajax({
                type: "POST",
                dataType: "json",
                url: "frmBI.aspx/Descargar_Archivo",
                contentType: "application/json; charset=utf-8",
                data: '{nombre_archivo:"' + archivo_descargar + '"}', // Here I send the name of the file to download to the webmethod
               

                success: function(data) {
                    alert("Archivo descargado correctamente");
                  
                },
                error: function(error) {
                    alert(error.responseText);
                    console.log(error.responseText);
                    jsonValue = jQuery.parseJSON(Error.responseText);
                    alert(error.respose.Text);
                    alert("Error");
                }
              });
           

        }
        else {
            alert("No se encontro ningun archivo");
        }

    }
 <input id="btn_download_file" type="button" value="Descargar Archivo" class="btn btn-success btn-block" onclick="return descargar_archivo_excel();"/>

Это код моего сервера:

[WebMethod]
    public static void Descargar_Archivo(string nombre_archivo)
    {        
         string direccion = HttpContext.Current.Server.MapPath("~/Excel_file/" + nombre_archivo);

                    System.IO.FileStream fs = null;

                    fs = System.IO.File.Open(direccion, System.IO.FileMode.Open);
                    byte[] btFile = new byte[fs.Length];
                    fs.Read(btFile, 0, Convert.ToInt32(fs.Length));
                    fs.Close();                      
                    HttpContext.Current.Response.AddHeader("Content-disposition", "attachment; filename=" + nombre_archivo);
                    HttpContext.Current.Response.ContentType = "application/octet-stream";
                    HttpContext.Current.Response.BinaryWrite(btFile);
                    HttpContext.Current.Response.Flush(); 
                    HttpContext.Current.Response.End();    
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...