带有angular2的Nativescript,如何从受保护的服务器

时间:2017-03-14 08:51:12

标签: angular nativescript

我使用 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添加标题太困难,如何以简单的方式归档?

由于

2 个答案:

答案 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