Как установить имя файла при загрузке файла? [Дубликат]

1

Я работаю над MVC 4. Я создал файл Excel динамически, используя следующий простой код. Мой хостинг находится на Azure.

Я создал корневой путь, а затем попытаюсь сохранить этот файл Excel.

Проблема в том, что когда возвращается ответ метода ActionResult он открывает всплывающее окно по умолчанию, чтобы открыть файл, но имя файла имеет GUID, а не мое предоставленное имя файла.

Код генерации файла Excel:

Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();

// ...
//Save
        LocalResource resource = RoleEnvironment.GetLocalResource("MyValue");
        string tempPath = resource.RootPath + "DemoFile.xls";
return tempPath;

tempPath возвращает путь, например C:\AppData\Local\dftmp\Resources\11a2435c-998c-4fe8-aa55-8bb42455b4ca\directory\DemoFile.xls.

Всплывающее окно "Загрузка файла" не дает имени файла как DemoFile оно gives some GUID почему так?

Изображение 174551

Код метода ActionResult:

public ActionResult DownloadExcel() {
    string path = ExcelGenerationCode(fileName);
        Stream s = new FileStream(path, FileMode.Open, FileAccess.Read);
        return new FileStreamResult(s, "application/vnd.ms-excel");
    }

Также пытался указать свойство name

public ActionResult DownloadExcel() {
    string path = ExcelGenerationCode(fileName);
        Stream s = new FileStream(path, FileMode.Open, FileAccess.Read);
        return new FileStreamResult(s, "application/vnd.ms-excel")
        {
            FileDownloadName = "myexcelFILE1.xls"
        };
    }

попадание ниже ошибки при предоставлении параметра имени файла. Изображение 174551

у меня много места и памяти.

Теги:
azure
excel
asp.net-mvc-4

1 ответ

3
Лучший ответ

Вы должны вернуть новый FileContentResult, и ваше действие должно вернуть FileResult вместо ActionResult, например:

public virtual FileResult DownloadFile(long fileId)
{
     string path = ExcelGenerationCode(fileName);
     return File(path, "application/vnd.ms-excel","donwload.xls");
}
  • 0
    обновил мой код ActionResult question above пожалуйста, проверьте
  • 1
    «Ваши действия должны быть FileResult» - не верно, FileResult наследует ActionResult , поэтому последняя также будет работать.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню