Asp.net mvc 如何仅在用户请求在ASP.NET MVC中保存文件时提供文件下载名?
我有一个控制器动作,它会返回这样的文件结果Asp.net mvc 如何仅在用户请求在ASP.NET MVC中保存文件时提供文件下载名?,asp.net-mvc,download,Asp.net Mvc,Download,我有一个控制器动作,它会返回这样的文件结果 return this.File("file.pdf", "application/pdf"); 对于URL“/Download/322”-其中322是文件的id 这非常有效,因此,如果用户单击指向PDF的链接,只要安装了PDF插件,它就会在他们的web浏览器中打开 但是,如果他们右键单击链接并选择“另存为…”会怎么样?浏览器会弹出文件名为“322”的窗口。我希望在这一点上有一个更好的文件名,方法如下: return this.File("file.
return this.File("file.pdf", "application/pdf");
对于URL“/Download/322”-其中322是文件的id
这非常有效,因此,如果用户单击指向PDF的链接,只要安装了PDF插件,它就会在他们的web浏览器中打开
但是,如果他们右键单击链接并选择“另存为…”会怎么样?浏览器会弹出文件名为“322”的窗口。我希望在这一点上有一个更好的文件名,方法如下:
return this.File("file.pdf", "application/pdf", "file.pdf");
但是如果我将控制器更改为那样返回,那么它将始终弹出下载框,因为MVC正在将内容处置头设置为附件(因此我无法嵌入文件)
总之,我是否可以检测到用户正在尝试下载文件,而不是文件只是嵌入到页面上的某个内容中?好吧,经过进一步思考,我决定每次只提供文件名。唯一的缺点是它将被标记为附件,因此不会加载到浏览器中(用户将下载该文件)
另外,我真的不认为你能做到我上面要求的。。。所以除非有人有其他想法。。。我会接受这个答案。好吧,经过仔细考虑,我决定每次只提供文件名。唯一的缺点是它将被标记为附件,因此不会加载到浏览器中(用户将下载该文件)
另外,我真的不认为你能做到我上面要求的。。。所以除非有人有其他想法。。。我接受这个答案。您无法确定浏览器如何配置以处理文档/内容 例如,可以右键单击HTML文档中的链接并选择“将链接另存为”/“将目标另存为”,然后下载该文件。该链接可能指向另一个HTML文档。绝对没有办法确定这是否发生了 唯一直接的方法是将响应的“内容处置”指定为“附件”,并使用具有适当值的参数“filename” 您的HTML响应应包含以下标题:
Content-Type: whatever/be-it
Content-Disposition: attachment; filename=FilenameToSaveAs.Ext
例如:
Content-Type: text/html
Content-Disposition: attachment; filename=mypage.html
如果浏览器能够理解这些标题(目前大多数浏览器都能理解),那么它们将打开“打开/保存/取消”对话框
它类似于Gmail中的“下载附件”图像,否则图像将显示在浏览器本身中。您无法确定浏览器如何配置以处理文档/内容 例如,可以右键单击HTML文档中的链接并选择“将链接另存为”/“将目标另存为”,然后下载该文件。该链接可能指向另一个HTML文档。绝对没有办法确定这是否发生了 唯一直接的方法是将响应的“内容处置”指定为“附件”,并使用具有适当值的参数“filename” 您的HTML响应应包含以下标题:
Content-Type: whatever/be-it
Content-Disposition: attachment; filename=FilenameToSaveAs.Ext
例如:
Content-Type: text/html
Content-Disposition: attachment; filename=mypage.html
如果浏览器能够理解这些标题(目前大多数浏览器都能理解),那么它们将打开“打开/保存/取消”对话框
这类似于Gmail中的“下载附件”图像,否则将显示在浏览器本身中。发布另一个答案。。。因为在注释中格式不起作用 我想到一个想法。。。使用JavaScript的方法 下载:
<a href='downloadFile.ext'
onclick="alert('This file cannot be shown, right click, select Save Target As to download');
return false'>
Text for link</a>
<a href="simpleFile.ext">Text for Link</a>
查看或下载:
<a href='downloadFile.ext'
onclick="alert('This file cannot be shown, right click, select Save Target As to download');
return false'>
Text for link</a>
<a href="simpleFile.ext">Text for Link</a>
在第二种情况下,用户可以在默认情况下单击并让浏览器处理,或者右键单击并保存 发布另一个答案。。。因为在注释中格式不起作用 我想到一个想法。。。使用JavaScript的方法 下载:
<a href='downloadFile.ext'
onclick="alert('This file cannot be shown, right click, select Save Target As to download');
return false'>
Text for link</a>
<a href="simpleFile.ext">Text for Link</a>
查看或下载:
<a href='downloadFile.ext'
onclick="alert('This file cannot be shown, right click, select Save Target As to download');
return false'>
Text for link</a>
<a href="simpleFile.ext">Text for Link</a>
在第二种情况下,用户可以在默认情况下单击并让浏览器处理,或者右键单击并保存 没错。很好地解释了发生的事情。这进一步强化了我必须选择一种方式。可以将其指定为附件,也可以不指定。很好地解释了发生的事情。这进一步强化了我必须选择一种方式。可以将其指定为附件,也可以不指定。