从服务器响应下载文件,其URL为.json文件

时间:2017-10-18 19:40:08

标签: javascript json download

我有一个Web服务,它将文件作为带扩展名为.json的url返回给请求浏览器。例如:

https://somesite/rest/directories/output/_ags_SessionFile_f46fd461-b437-11e7-9dc1-005056bd201b.json

目的是简单地导航这个URL并调用“SaveAs”或者只是将.json文件保存到下载目录。

这适用于大多数情况,但是在没有与IE的.json文件类型关联的计算机上(在ControlPanel - >默认程序中找到),则不会下载文件或使用SaveAs选项和新用户提示打开浏览器窗口,显示页面中显示的.json文件的内容。

我有点不确定如何搜索这样的东西,即使这篇文章可能还不够,因为我根本没有遇到过这个问题。

   function downloadFile(results, messages) {
                    
                    //set a var of the complete url address that is returned from the GP service request
                    var urlOfFile = results[0].value.url;
                    
                    //get the div from the html of the widget
                    link = document.getElementById('downloadSession');

                    link.setAttribute('href', urlOfFile);
                    link.click();

                }

<div> 
    <a id="downloadSession" href="" target="_blank"></a>
</div>

2 个答案:

答案 0 :(得分:1)

将HTML5 download属性添加到<a>标记应该适合您

Anchor Tag doc

  

下载HTML5

     

此属性指示浏览器下载URL而不是导航到URL,因此系统会提示用户将其另存为本地文件

文档还注意到一些类似的问题,它只适用于同源URL和其他一些URL,因此值得一读。

不幸的是,Internet Explorer不支持download属性,因此要使下载正常工作,您必须在服务器的响应中添加Content-TypeContent-Disposition标头

他们应该看起来像:

Content-Type: application/octet-stream
Content-Disposition: attachment;filename=\"filename.json\"

答案 1 :(得分:0)

添加标题:

header('Content-disposition: attachment; filename=file.json');
header('Content-type: application/json');
echo $json;