检测链接是不是为可下载文件

Posted

技术标签:

【中文标题】检测链接是不是为可下载文件【英文标题】:Detect if link is downloadable file检测链接是否为可下载文件 【发布时间】:2020-03-11 09:31:52 【问题描述】:

如何在用户实际点击之前检测目标链接是否会触发下载?

例如,下面的链接是一个文件:

string url="http://www.orimi.com/pdf-test.pdf"

但这个不是:

string url="https://www.google.com/"

我试过了:

Uri uri = new Uri(url);
if (uri.IsFile)
   //...

但它为 pdf 链接提供了false

【问题讨论】:

您可以执行 HTTP HEAD 请求并查看我猜的应用程序类型吗?对于此 URL,它返回“application/pdf” 我会坚持 Ryan 的建议。检查这个答案:***.com/a/5953264/2679160 补充一点,Uri 类可以是本地文件,也可以是网址等。IsFile 只会对本地文件返回 true,它不知道网址是否有可下载的文件。 docs.microsoft.com/en-us/dotnet/api/… - 如果文件不可下载,它也没有应用程序类型。 【参考方案1】:

您无法真正知道您拥有的链接不会导致文件下载(在调用 URL 之前),因为即使是没有文件扩展名的 URL 也可以链接到文件。

您可以做的是检查 URL 是否包含文件扩展名,这可以使用以下代码完成:

 var uri = new Uri('https://www.google.com/');

 var fileInfo = new FileInfo(uri.AbsolutePath);
  if (!string.IsNullOrWhiteSpace(fileInfo.Extension))
  
    //Uri has no file extension
   

【讨论】:

以上是关于检测链接是不是为可下载文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在CodeIgniter中将上载的文件(PDF,DOC等)显示为可下载的链接

使用 R 从网页中抓取可下载文件的链接地址?

MVC;将可下载文件返回到视图

从 JavaScript 创建一个可下载的附件?

如何在golang中检查URL是不是可下载?

视频行人重识别系统(UI界面,Python源码,可下载)