jQuery / javascript下载文件无法在Chrome上运行

时间:2014-05-16 13:26:13

标签: c# javascript jquery asp.net-mvc

我有一个jQuery脚本,我想在用户点击链接后下载一个位于某个服务器上的文件。在IE11上,这可以正常工作,因为我只是打电话给:

window.open('file:///MyServer0001/SomeFolder/Tmp/ToiletFlush.log'

我知道出于安全原因,Chrome不允许使用协议文件:///。这很有趣,因为如果我在地址栏上写下这个URL,他会显示文件,但是如果我打电话给window.open(),他就会给我一个新的空窗口。此外,删除文件:///,在Chrome上没有任何操作,它表示页面不可用

所以现在我不知道如何在铬上做这项工作。我以为我可以通过POST / GET调用控制器函数来做出解决方法,返回FileResult并下载文件。这肯定有效,但我想知道一种简单的方法,只使用jQuery / JavaScript直接做到这一点。

任何想法?

2 个答案:

答案 0 :(得分:2)

尝试ASP.NET MVC FileResult:

查看:

<a href='@Url.Action('GetFile','Home')">Download File</a>

在家庭控制器中:

public FileResult GetFile()
{
//Read file content into variable.
string content=File.ReadAllText("filepath");
byte[] byteArray = Encoding.ASCII.GetBytes(content);
return File(byteArray, System.Net.Mime.MediaTypeNames.Text.Plain, "ToiletFlush.log");
}

答案 1 :(得分:0)

试试这个,

在Windows上:
1.找到Chrome安装的本地网址
2.从命令行启动Chrome w /&#39; -allow-file-access-from-files&#39;先于它:

–allow-file-access-from-files C://...

在OSX上,只需在终端输入:

open /Applications/Google\ Chrome.app --args --allow-file-access-from-files

Using Google Chrome Canary is also possible:

open /Applications/Google\ Chrome\ Canary.app --args --allow-file-access-from-files

或者......您需要在本地服务器上运行您的应用程序。