代码之家  ›  专栏  ›  技术社区  ›  Peter Becker

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

  •  0
  • Peter Becker  · 技术社区  · 17 年前

    我正在尝试使用内容协商为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 回复  |  直到 17 年前
        1
  •  0
  •   tm_lv    17 年前

    就像cobbal提到的——由于不能在URL本身中设置accept头,所以应该有额外的内容协商机制。有些框架允许在表单中设置内容类型

    http://example.com/resource;format
    

    拥有 format 在URL的末尾,用分号分隔。然后,在处理请求时,解析出格式部分。

    在你的情况下,可能是

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

    到服务器RDF,并且没有为接受头中的任何内容指定格式。

        2
  •  0
  •   Jim Counts    17 年前

    此页说明如何设置将在浏览器中显示RDF的ASPX页。这可能对你有帮助。虽然我不能确定,因为您已经指定了您在服务器上运行的内容。

    Building an RSS feed made simple