Загрузить файл не удалось с использованием ответа ASP.NET CoreJquery

Программирование на jquery
Ответить
Anonymous
 Загрузить файл не удалось с использованием ответа ASP.NET Core

Сообщение Anonymous »

У меня есть следующий код для загрузки файла
jquery

Код: Выделить всё

 function DownloadExcel() {
var laundrys = new Object();

$.ajax({
type: 'POST',
url: '@Url.Content("Laundry/DownloadExcel")',
data: { laundry: laundrys},
dataType: 'json',
beforeSend: function () {
$("#loadinggif").show();
},
success: function (result) {
$("#loadinggif").hide();
if (result.isuccess) {
GenerateFile(result);
}
else {
Swal.fire('Error Found', result.messageerror, 'error');
}
},
error: function (result) {
$("#loadinggif").hide();
Swal.fire('Unknown Error', result, 'error');

}
});
}

function GenerateFile(result) {
$.fileDownload('@Url.Content("Laundry/GenerateFiles")',
{
httpMethod: "POST",
data: {
folder: result.folder,
filesname: result.filesname
},
successCallback: function (url) {
Swal.fire('Download Success', "", 'success');
},
failCallback: function (responseHtml, url) {
Swal.fire('Download Failed',responseHtml, 'error');
}
});
}
и это код в моем C#
C#

Код: Выделить всё

public JsonResult DownloadExcel(Laundry laundry)
{
bool result = true;
string MsgError = null;
string Folder = null;
string FileName = "GenerateFile-"+ DateTime.Now.ToString("yyyyMMdd_HHmmss").Replace("/", "-")+".xls";
try
{
string startupPath = _webHostEnvironment.WebRootPath;
Folder = startupPath + "\\template\\";
string Path = Folder + "Template.xls";
string NewPath = Folder + FileName;

System.IO.File.Copy(Path, NewPath, true);

HSSFWorkbook workBook;
using (FileStream fs = new FileStream(NewPath, FileMode.Open, FileAccess.Read))
{
workBook = new HSSFWorkbook(fs);
}

//mycode

workBook.SetSheetName(0, "Report Laundry");
using (FileStream fs = new FileStream(NewPath, FileMode.Create, FileAccess.Write))
{
workBook.Write(fs);
fs.Close();
}

}
catch(Exception e)
{
result = false;
MsgError = "Error Exception: " + e.Message;
}

return Json(new { isuccess = result, messageerror = MsgError,folder = Folder, filesname = FileName,  });
}

public ActionResult GenerateFiles(string folder, string filesname)
{
string Msg = "success";
try
{
byte[] Data = System.IO.File.ReadAllBytes(folder + filesname);
string contentType;
new FileExtensionContentTypeProvider().TryGetContentType(filesname, out contentType);

HttpContext.Response.Clear();
HttpContext.Response.ContentType = contentType;
HttpContext.Response.Headers.Add("Content-Length", Convert.ToString(Data.Length));
HttpContext.Response.Headers.Add("Content-Disposition", string.Format("{0};FileName=\"{1}\"", "attachment", filesname));
HttpContext.Response.Headers.Add("Set-Cookie", "fileDownload=true;  path=/");
HttpContext.Response.Body.WriteAsync(Data);
}
catch(Exception e)
{
Msg = "error Exception : "+e.Message;
}

System.IO.File.Delete(folder + filesname);

return Json(Msg);
}
когда я использую следующий код, загрузка прошла успешно, но файл не загружается с сообщением об ошибке «Сбой сети». Это вызвано неправильным написанием кода ответа?

Подробнее здесь: https://stackoverflow.com/questions/707 ... p-net-core
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»