Привет, сообщество. У меня возникла следующая проблема. Надеюсь, вы заранее поможете мне, большое спасибо.
Моя проблема заключается в загрузке файла, специально предназначенного для 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();
}