Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何使用Ajax调用返回文件附件?_Asp.net Mvc_Jquery_Download_Attachment - Fatal编程技术网

Asp.net mvc 如何使用Ajax调用返回文件附件?

Asp.net mvc 如何使用Ajax调用返回文件附件?,asp.net-mvc,jquery,download,attachment,Asp.net Mvc,Jquery,Download,Attachment,我有一个asp.net mvc页面(使用C#),其中包含一个包含文件名的链接: <a id="a1" href="#">File Name 1</a> 单击此链接时,我希望使用Ajax将此文件“a1”的id传递给MVC控制器操作,然后该操作应返回一个文件附件(不能通过文件url访问,只能通过文件附件访问),以便显示带有“打开/保存”按钮的对话框 如何实现这一点?您不需要ajax,只需提供一个指向该文件的链接,并让浏览器负责下载;或者,使用window.locatio

我有一个asp.net mvc页面(使用C#),其中包含一个包含文件名的链接:

<a id="a1" href="#">File Name 1</a>

单击此链接时,我希望使用Ajax将此文件“a1”的id传递给MVC控制器操作,然后该操作应返回一个文件附件(不能通过文件url访问,只能通过文件附件访问),以便显示带有“打开/保存”按钮的对话框


如何实现这一点?

您不需要ajax,只需提供一个指向该文件的链接,并让浏览器负责下载;或者,使用
window.location
。就像我说的,我不能这样做,链接是本地到服务器的,例如c:/folder/file.doc。服务器如何加载该文件并将其发送到浏览器?将该文件置于Web服务器根目录之外,然后让您的控制器读取该文件并返回到具有正确标题的客户端。然后,您必须以某种方式保护临时文件URL[授权、令牌、会话等]。是的,这是最初的问题,如何在操作端实现它?发送带有标题等的附件。这取决于您在服务器上使用的技术,但您可以在读取磁盘上的文件时解决问题//根据文件MIME类型设置适当的标题//将答案发送回客户端。