使用HTTP.get

时间:2015-04-29 09:02:20

标签: javascript node.js meteor gridfs gridfs-stream

只有在我向“GET”http请求的标头添加x-authentication令牌(并且我不想使用cookie)时,才能提供我的文件。直接后果是我不能仅仅通过在html中使用它来调用文件,我需要从JavaScript调用中获取它,最好是异步。

由于我的客户端是Meteor,我想使用HTTP.get方法。我得到了我用http.get获取文件的部分,但不是我附加到文件的部分,例如,图像的src属性。

如果我想在我的页面中使用它,我应该如何返回文件下载的结果? (例如,将其附加到图像的src属性)。我应该使用专用模板还是可以使用帮助器来实现?

编辑:我取得了一些进展。根据类似案例“how to display images downloaded using XMLHttpReques t的答案,我看到你可以在base64中编码响应内容文本。

所以这是我的想法: 我使用帮助器来返回img src属性。我知道当我在客户端使用它时,http调用是异步的,所以我默认返回一个占位符值(参见最后一行)

这是我的代码(在img src属性中调用帮助程序):

    link : function(){

    HTTP.get ("http://localhost:3000" + Files.baseURL + "/" + this.md5,
    {
        headers:{
            "X-Auth-Token": Accounts._storedLoginToken()
        }
        },
        function (error, result) {
            if (error){
                console.log ("an error " + result.statusCode + " occured");
            }
            else
            {
                retval ="";
                        for (var i=0; i<=result.content.length-1; i++)
                        retval += String.fromCharCode(result.content.charCodeAt(i) & 0xff);
                return "data:"+this.contentType+";base64," + encode64(retval)
            }
        })
    return "http://localhost:3000/images/placeholder.png"
    },

此代码不起作用,它在http.get行上抛出错误。     “模板助手中的例外:.link @ http://localhost:3000/client/views/uploader/uploader.js?b82cf5a1d421ef6a5a1e4eabaf8327fd1a9f2d75:43:2

1 个答案:

答案 0 :(得分:0)

正如BraveKenny建议的那样,我使用Chrome而不是Firefox进行调试。它似乎只是缺少http包。