Javascript 使用HTTP.get在img src中提供文件
只有在我向“GET”http请求的头添加x-authentication令牌(并且我不想使用cookie)时,才能提供我的文件。直接的结果是,我不能仅仅通过在html中使用文件的URL来调用文件,我需要从JavaScript调用中获取它,最好是异步的 因为我的客户机是Meteor,所以我想使用HTTP.get方法。我使用http.get获取文件的部分,但不是将其附加到图像的src属性的部分 如果我想在我的页面中使用文件下载的结果,我应该如何返回它?(例如,将其附加到图像的src属性)。我应该使用专用的模板,还是可以使用助手来实现 编辑:我取得了一些进展。根据对类似案例“t”的回答,我发现您可以在base64中对响应内容文本进行编码 我的想法是: 我使用助手返回img src属性。我知道当我在客户端使用http调用时,它是异步的,所以默认情况下我返回一个占位符值(参见最后一行) 以下是我的代码(helper在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属性)。我应该使用
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"
},