사용자가 내 Asp.Net MVC 응용 프로그램에서 파일을 다운로드 할 수 있도록 FileResult를 사용해야한다고 제안했습니다. 그러나 내가 찾을 수있는 유일한 예는 항상 이미지 파일 (콘텐츠 유형 이미지 / JPEG 지정)과 관련이 있습니다.
그러나 파일 형식을 알 수 없으면 어떻게합니까? 사용자가 내 사이트의 파일 영역에서 거의 모든 파일을 다운로드 할 수 있기를 바랍니다.
이 작업을 수행하는 한 가지 방법 ( 이전 코드 참조)을 읽었 지만 실제로는 한 가지 경우를 제외하고는 잘 작동합니다. 다른 이름으로 저장 대화 상자에 나타나는 파일 이름은 파일 경로에서 밑줄로 연결됩니다 ( folder_folder_file.ext). 또한 사람들은 BinaryContentResult를 찾은이 사용자 정의 클래스를 사용하는 대신 FileResult를 반환해야한다고 생각합니다.
MVC에서 이러한 다운로드를 수행하는 "올바른"방법을 아는 사람이 있습니까?
편집 : 나는 대답을 얻었지만 (다른 사람이 관심이 있다면 전체 작업 코드를 게시해야한다고 생각했습니다.
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);
에서 content-type을 설정하는 것이 편리하다는 것을 알았습니다.