У мене було запропоновано мені використовувати FileResult, щоб дозволити користувачам завантажувати файли з моєї програми Asp.Net MVC. Але єдині приклади цього, які я можу знайти, завжди стосуються файлів зображень (із зазначенням типу вмісту image / jpeg).
Але що робити, якщо я не можу знати тип файлу? Я хочу, щоб користувачі могли завантажити майже будь-який файл із файлового файлу мого сайту.
Я прочитав один метод виконання цього коду (див. Попередній пост для коду), який насправді працює добре, за винятком однієї речі: ім'я файлу, що з’являється у діалоговому вікні «Зберегти як», є об'єднаним із шляху файлу з підкресленнями ( folder_folder_file.ext). Крім того, здається, люди думають, що я повинен повернути FileResult замість цього спеціального класу, який я знайшов BinaryContentResult.
Хтось знає "правильний" спосіб такого завантаження в MVC?
EDIT: Я отримав відповідь (нижче), але просто подумав, що я повинен опублікувати повний робочий код, якщо хтось інший зацікавлений:
public ActionResult Download(string filePath, string fileName)
{
string fullName = Path.Combine(GetBaseDir(), filePath, fileName);
byte[] fileBytes = GetFile(fullName);
return File(
fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
}
byte[] GetFile(string s)
{
System.IO.FileStream fs = System.IO.File.OpenRead(s);
byte[] data = new byte[fs.Length];
int br = fs.Read(data, 0, data.Length);
if (br != fs.Length)
throw new System.IO.IOException(s);
return data;
}
Response.ContentType = MimeMapping.GetMimeMapping(filePath);
, з stackoverflow.com/a/22231074/4573839