如何从浏览器中下载包含非HTML内容类型的文件?

时间:2009-03-20 05:20:06

标签: browser download mime-types content-negotiation

我正在尝试使用内容协商来为HTTP服务器上的资源提供HTML和RDF / XML表示。在服务器端,这是有效的,即

curl -H "Accept: application/rdf+xml" http://localhost:8182/ontologies/1

将检索正确的版本。我也可以用JavaScript / Dojo做同样的事情:

function downloadOntologyRDF(ontologyId) {
    dojo.xhrGet( {
        url:"${baseUrl}/ontologies/" + ontologyId,
        headers: {"Accept": "application/rdf+xml"},
        timeout: 5000,
        load: function(response, ioArgs) {
            var preNode = document.createElement("pre");
            preNode.appendChild(document.createTextNode(response));
            var foo = new dijit.Dialog({
                title: "RDF",
                content: preNode,
                style: "overflow: auto;"
            });
            foo.show();
            return response;
        },
        error: function(response, ioArgs) {
            alert("Retrieving the RDF version failed: " + response);
            return response;
        }
    });
}

将在弹出对话框中显示结果。我被困的地方是为用户提供下载此版本的方法。我想在页面上有一个链接,可以在浏览器中将RDF显示为页面,也可以直接打开保存对话框。这是否可行而不诉诸查询参数或其他技巧?

2 个答案:

答案 0 :(得分:0)

本页介绍如何设置将在浏览器中显示RDF的aspx页面。它可能会帮助你。虽然我无法确定,因为您还没有指定您在服务器上运行的内容。

Building an RSS feed made simple

答案 1 :(得分:0)

与cobbal提及 - 由于您无法在URL本身中设置Accept标头,因此您应该有其他内容协商机制。一些框架允许以表单

设置内容类型
http://example.com/resource;format

format放在网址末尾,以分号分隔。然后,在处理请求时,它会解析格式部分。

在你的情况下,它可能类似于

http://localhost:8182/ontologies/1;rdf

到服务器rdf,并且没有指定格式来提供接受标头中的任何内容。