Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用HTTP.get在img src中提供文件_Javascript_Node.js_Meteor_Gridfs_Gridfs Stream - Fatal编程技术网

Javascript 使用HTTP.get在img src中提供文件

Javascript 使用HTTP.get在img src中提供文件,javascript,node.js,meteor,gridfs,gridfs-stream,Javascript,Node.js,Meteor,Gridfs,Gridfs Stream,只有在我向“GET”http请求的头添加x-authentication令牌(并且我不想使用cookie)时,才能提供我的文件。直接的结果是,我不能仅仅通过在html中使用文件的URL来调用文件,我需要从JavaScript调用中获取它,最好是异步的 因为我的客户机是Meteor,所以我想使用HTTP.get方法。我使用http.get获取文件的部分,但不是将其附加到图像的src属性的部分 如果我想在我的页面中使用文件下载的结果,我应该如何返回它?(例如,将其附加到图像的src属性)。我应该使用

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

因为我的客户机是Meteor,所以我想使用HTTP.get方法。我使用http.get获取文件的部分,但不是将其附加到图像的src属性的部分

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

编辑:我取得了一些进展。根据对类似案例“t”的回答,我发现您可以在base64中对响应内容文本进行编码

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

以下是我的代码(helper在img src属性内调用):

link:function(){
HTTP.get(“http://localhost:3000“+Files.baseURL+”/“+this.md5,
{
标题:{
“X-Auth-Token”:帐户
}
},
函数(错误、结果){
如果(错误){
console.log(“出现错误”+result.statusCode+);
}
其他的
{
retval=“”;

对于(var i=0;i,正如BraveKenny建议的那样,我使用Chrome而不是Firefox进行调试。似乎只是缺少http包。

您正在使用Chrome进行调试吗?如果没有,可以吗?错误通常在Chrome控制台中更加明确。我没有。感谢您的建议,它让我意识到我刚刚错过了http包…:-)很遗憾,他们没有让它在所有浏览器上都能正常工作,或者至少在meteor CLI的某个地方大声写下“使用CHROME进行调试”。
    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"
    },