Мне предложили использовать 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;
}