我使用 nativescript 和 angular2 到一个简单的图片库,但图片在受保护的服务器下..在网络应用中,这是由会话cookie解决的..但在这里我必须实现一个令牌身份验证。
我正在通过以下方式下载图片:
get(url: string) {
let headers = new Headers();
headers.append("Authorization", "Token " + Config.token);
return this.http.get(this.base_url+url, { headers: headers, })
}
在我的组件中:
this.mediaService.get(obj.url_tn)
.subscribe(data=>
{
let file:Blob = new Blob([data.arrayBuffer()]);
console.dump(data);
let urlFile = URL.createObjectURL(file );
this.photos.push(urlFile) ;
})
但这给了我一个错误:
错误:错误:0:0引起:Blob未定义
我不知道为什么要向img
添加标题太困难,如何以简单的方式归档?
由于
答案 0 :(得分:0)
这是怎么回事,但不是以nativescript / angular2的方式,这是一个后端就像使用django ..
import base64
import mimetypes
from django.http import FileResponse, HttpResponse
def download(request):
"""
your way to get your file and original_filename
"""
type, encoding = mimetypes.guess_type(original_filename)
if type is None:
type = 'application/octet-stream'
if request.GET.get('base64'):
response = HttpResponse("data:"+type+";base64,"+base64.b64encode(fobject.read()))
else:
response = FileResponse(fobject)
response['Content-Type'] = type
response['Content-Length'] = str(os.stat(file_path).st_size)
if encoding is not None:
response['Content-Encoding'] = encoding
"""
ETC ETC ETC
"""
return response
答案 1 :(得分:0)
NativeScript' http
模块有一个名为getImage(...)
的函数。
我自己没有尝试过,但我认为您应该可以使用它来加载私人服务中的图像:
http://docs.nativescript.org/api-reference/modules/http.html#getimage
注意:getImage(...)
需要URL
- 字符串或HttpRequestOptions
- 对象。
我建议为它创建一个管道,就像我为image-cache编写的那样: https://gist.github.com/m-abs/9e640e5805a21a842d55e02b291147c5