집 >백엔드 개발 >C#.Net 튜토리얼 >.Net Core 파일 다운로드 구현 예
이 문서에서는 .NetCore 다운로드 파일을 공유합니다. 두 가지 일반적인 다운로드가 있습니다. A 태그는 다운로드 파일 주소와 게시 방법 또는 백그라운드 출력 파일 스트림 요청을 직접 가리킵니다. 2. 도움이 되셨다면 지원해주세요.
사이트에서 콘텐츠 유형을 인식하지 못하는 파일을 다운로드하도록 허용(예: MIME 유형 제한 없이 다운로드)
.nupkg 및 .apk 접미사가 포함된 파일 다운로드를 허용하는 방법
Razor 템플릿 포스트 다운로드 파일 예시
반년 동안 NetCore를 사용하는 것에 대한 몇 가지 생각과 고민
netcore의 웹 프로젝트의 경우, 다운로드가 가능한 내장 파일 형식이 몇 가지 있습니다. 먼저 일반 razorweb 프로젝트를 통해 연결하여 Excel을 직접 다운로드하는 예를 살펴보겠습니다. 프로젝트의 wwwroot 디렉터리에 있는 폴더와 해당 디렉터리에 다음 파일이 다운로드에 저장됩니다.
테스트를 통과한 후에는 Excel만
파일이 제한되지 않습니다를 통해 설정할 수 있습니다.
public static IApplicationBuilder UseStaticFiles(this IApplicationBuilder app, StaticFileOptions options); 확장을 다음 코드로 수정하면 됩니다. app.UseStaticFiles(new StaticFileOptions
{ //设置不限制content-type
ServeUnknownFileTypes = true
});
그런 다음 작업을 다시 시작하면 됩니다. 아래 스크린샷에 표시된 것처럼 이러한 파일에 액세스하고 다운로드하는 데 문제가 없습니다(현재 어떤 접미사가 있는 파일도 다운로드할 수 있습니다).
Google Chrome에서 cs 접미사가 있는 파일의 경우 여기에는 사진이 없습니다. 관심이 있으시면 시도해 볼 수 있습니다.
.nupkg 및 .apk 접미사가 있는 파일 다운로드를 허용하는 방법
위의 예를 통해.nupkg 및 . apk 접미사를 사용하면 다음 코드를 사용하여 다음과 같은 MIME 유형을 추가할 수 있습니다. app.UseStaticFiles(new StaticFileOptions
{ //ServeUnknownFileTypes = true
ContentTypeProvider = new FileExtensionContentTypeProvider(new Dictionary<string, string>
{
{ ".apk","application/vnd.android.package-archive"},
{ ".nupkg","application/zip"}
})
});
동일한 방법을 사용하여 excel, apk, nupkg 접미사가 있는 파일을 다운로드할 수도 있습니다. http://
.cs 파일에 확장 유형을 추가하지 않았기 때문에 시스템은 직접 404를 반환합니다. 여기서는 FileExtensionContentTypeProvider 객체를 전달합니다. 생성자는 다운로드할 수 있는 콘텐츠 유형 파일을 프로젝트에 알리기 위해 매핑 dic 유형을 전달합니다. Razor 템플릿에 대한 다운로드 후 파일의 예
, 최근 시간이 나면 다음과 같이 Razor 템플릿을 연구하겠습니다. 백엔드에 게시 양식을 통해 파일을 다운로드하도록 요청할 것입니다. login.cshtml 파일의 코드는 바로 아래에 제공됩니다.@page @model LoginModel @{}<form method="post"> <button type="submit" asp-page-handler="down" class="btn">下载</button> <button type="submit" asp-page-handler="down01" class="btn">下载01</button> <button type="submit" asp-page-handler="down02" class="btn">下载02</button> </form>여기서 주목할 가치가 있습니다. razor는 asp-page-handler=
를 통해 실행됩니다. 백엔드 메소드를 요청하기 위해 그녀가 생성한 최종 HTML 코드가 어떤지 살펴보겠습니다.
요청한 백엔드 메소드가 주로 전달되는 것을 볼 수 있습니다.handler
를 매개변수 이름으로 통해 아래를 살펴보겠습니다. 백엔드 코드는 다음과 같이 작성됩니다(파일 다운로드를 용이하게 하기 위해 love.apk를 예로 사용합니다)./// <summary> /// 虚拟文件地址输出下载 /// </summary> /// <returns></returns> public IActionResult OnPostDown() { var addrUrl = "/bak/love.apk"; return File(addrUrl, "application/vnd.android.package-archive", Path.GetFileName(addrUrl)); } /// <summary> /// 文件流的方式输出 /// </summary> /// <returns></returns> public IActionResult OnPostDown01() { var addrUrl = @"D:\F\学习\vs2017\netcore\Study.AspNetCore\WebApp02-1\wwwroot\bak\love.apk"; var stream = System.IO.File.OpenRead(addrUrl); return File(stream, "application/vnd.android.package-archive", Path.GetFileName(addrUrl)); } /// <summary> /// 通过HttpClient获取另外站点的文件流,再输出 /// </summary> /// <returns></returns> public async Task<IActionResult> OnPostDown02() { var path = "https://files.cnblogs.com/files/wangrudong003/%E7%89%B9%E4%BB%B701.gif"; HttpClient client = new HttpClient(); client.BaseAddress = new Uri(path); var stream = await client.GetStreamAsync(path); return File(stream, "application/vnd.android.package-archive", Path.GetFileName(path)); }세 가지 게시물 승인 방법 백엔드에서는 모두 FileStreamResult를 사용하여 다운로드한 파일을 출력합니다. 차이점은 파일 소스에 있습니다.
간단한 사이트의 경우 다운로드 파일은 일반적으로 여기의 wwwroot/bak 디렉토리와 다소 유사합니다. ;
파일 보안을 위해 일부 사이트는 일반적으로 웹사이트와 동일한 서버 디스크에 존재하므로, 파일 스트림을 통해 다운로드해야 합니다. 여기에 두 번째 방법을 입력하고 File()에 전달합니다. 마지막 방법은 자신의 다른 사이트나 다른 사람의 사이트에 있는 파일을 전송하여 자신의 파일로 출력하는 것입니다. 이 방법도 razor의 핸들러 매개변수로 사람들이 흔히 부르는 지난 6개월 동안 NetCore를 사용하면서 느낀 점과 고민
위 내용은 .Net Core 파일 다운로드 구현 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!