如何用ASP.NET Core动态下载文件并实现个性化长尾词下载功能?

2026-03-30 10:341阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计695个文字,预计阅读时间需要3分钟。

如何用ASP.NET Core动态下载文件并实现个性化长尾词下载功能?

在ASP.NET Core中,您可以在静态目录中添加文件,并直接通过访问URL下载这些文件。但这种方法可能不够安全且缺乏灵活性。更好的做法是在Controller控制器中添加一个Action,通过这个Action访问服务器上的文件,然后提供下载。以下是实现这一功能的简化代码示例:

csharppublic IActionResult DownloadFile(){ var filePath=Path.Combine(Directory.GetCurrentDirectory(), path/to/your/file.txt); if (System.IO.File.Exists(filePath)) { var memory=new MemoryStream(); using (var stream=new FileStream(filePath, FileMode.Open)) { stream.CopyTo(memory); } memory.Position=0; return File(memory, GetContentType(filePath), Path.GetFileName(filePath)); } else { return NotFound(); }}

private string GetContentType(string path){ var types=GetMimeTypes(); var ext=Path.GetExtension(path).ToLowerInvariant(); return types[ext];}

private Dictionary GetMimeTypes(){ return new Dictionary { {.txt, text/plain}, {.pdf, application/pdf}, // 添加更多文件类型和对应的MIME类型 };}

ASP.NET Core 中,可以在静态目录添加文件,直接访问就可以下载。但是这种方法可能不安全,也不够灵活。

我们可以在 Controller 控制器中 添加 一个 Action,通过此Action,即可访问服务器的任何文件。

Action 格式

    public FileResult Down() {         return File(xxx,xxx,xxx); }

File() 对象

问题在于这个 File() 对象,应该怎么写

笔者举个例子

在100%无错的条件下,文件路径 F:\a.txt

  • 1,创建一个文件流 FileStream
  • 2,获取文件类型 Content-Type,可以用代码获取,也可以用字符串填写
  • 3,设置文件名

var stream = System.IO.File.OpenRead(“F:\a.txt”); //创建文件流

txt 的文件类型为text/plain

设置文件名为 b.txt

那么返回的File 代码如下

如何用ASP.NET Core动态下载文件并实现个性化长尾词下载功能?

return File(stream, "text/plain", “b.txt");

就这么简单。

获取文件类型

C#获取文件类型可以参考

www.jb51.net/article/234584.htm

关于文件类型对应得Context-Type

tools.jb51.net/table/http_content_type

笔者附上小方法

//引入 using System.IO; var contentype = MimeMapping.GetMimeMapping(fileName);     //获取文件类型

动态获取文件

public FileResult DownSH(string DownM) //要下载文件码 { var path = _sqlContext.jexusSqls.FirstOrDefault(a => a.DownM == DownM.ToString()).FilePath; //在数据库查找此文件码的文件地址 if (!System.IO.File.Exists(path)) return null; var stream = System.IO.File.OpenRead(path); //创建文件流 return File(stream, "application/x-sh", DownM+".sh"); }

编写方式多种多样,只需要解决文件流、文件类型、文件名,这三个核心即可。

到此这篇关于ASP.NET Core实现动态获取文件并下载的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。

本文共计695个文字,预计阅读时间需要3分钟。

如何用ASP.NET Core动态下载文件并实现个性化长尾词下载功能?

在ASP.NET Core中,您可以在静态目录中添加文件,并直接通过访问URL下载这些文件。但这种方法可能不够安全且缺乏灵活性。更好的做法是在Controller控制器中添加一个Action,通过这个Action访问服务器上的文件,然后提供下载。以下是实现这一功能的简化代码示例:

csharppublic IActionResult DownloadFile(){ var filePath=Path.Combine(Directory.GetCurrentDirectory(), path/to/your/file.txt); if (System.IO.File.Exists(filePath)) { var memory=new MemoryStream(); using (var stream=new FileStream(filePath, FileMode.Open)) { stream.CopyTo(memory); } memory.Position=0; return File(memory, GetContentType(filePath), Path.GetFileName(filePath)); } else { return NotFound(); }}

private string GetContentType(string path){ var types=GetMimeTypes(); var ext=Path.GetExtension(path).ToLowerInvariant(); return types[ext];}

private Dictionary GetMimeTypes(){ return new Dictionary { {.txt, text/plain}, {.pdf, application/pdf}, // 添加更多文件类型和对应的MIME类型 };}

ASP.NET Core 中,可以在静态目录添加文件,直接访问就可以下载。但是这种方法可能不安全,也不够灵活。

我们可以在 Controller 控制器中 添加 一个 Action,通过此Action,即可访问服务器的任何文件。

Action 格式

    public FileResult Down() {         return File(xxx,xxx,xxx); }

File() 对象

问题在于这个 File() 对象,应该怎么写

笔者举个例子

在100%无错的条件下,文件路径 F:\a.txt

  • 1,创建一个文件流 FileStream
  • 2,获取文件类型 Content-Type,可以用代码获取,也可以用字符串填写
  • 3,设置文件名

var stream = System.IO.File.OpenRead(“F:\a.txt”); //创建文件流

txt 的文件类型为text/plain

设置文件名为 b.txt

那么返回的File 代码如下

如何用ASP.NET Core动态下载文件并实现个性化长尾词下载功能?

return File(stream, "text/plain", “b.txt");

就这么简单。

获取文件类型

C#获取文件类型可以参考

www.jb51.net/article/234584.htm

关于文件类型对应得Context-Type

tools.jb51.net/table/http_content_type

笔者附上小方法

//引入 using System.IO; var contentype = MimeMapping.GetMimeMapping(fileName);     //获取文件类型

动态获取文件

public FileResult DownSH(string DownM) //要下载文件码 { var path = _sqlContext.jexusSqls.FirstOrDefault(a => a.DownM == DownM.ToString()).FilePath; //在数据库查找此文件码的文件地址 if (!System.IO.File.Exists(path)) return null; var stream = System.IO.File.OpenRead(path); //创建文件流 return File(stream, "application/x-sh", DownM+".sh"); }

编写方式多种多样,只需要解决文件流、文件类型、文件名,这三个核心即可。

到此这篇关于ASP.NET Core实现动态获取文件并下载的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持自由互联。