2017-05-13 5 views
0

DjangoレスポンスでリモートURLからファイルをストリームする方法はありますか(ファイルをローカルにダウンロードする必要はありません)?リモートURLからDjangoへのストリームファイルを表示する

# view.py 
def file_recover(request, *args, **kwargs):  
    file_url = "http://remote-file-storage.com/file/111" 

    return StreamFileFromURLResponse(file_url) 

私たちはファイルストレージを持っています(1 GB以上のファイル可)。ダウンロードURLを共有することはできません(セキュリティ上の問題があります)。ファイルストリーミングは大幅に ダウンロードストリームをDjangoレスポンスに転送することでダウンロード速度を向上させることができます。

+0

ん[この質問](http://stackoverflow.com/questions/18814162/serving-a-downloadable-file-huge-from-remote -with-django)はあなたを助けますか? – Tony

+0

ええ、そうです。私はスニペットを実装する方法を探していました。 –

答えて

0

ここでは、Raw Response Contentリクエストからのpythonモジュールを使用しています。 StreamingHttpResponse

import requests 
from django.http import StreamingHttpResponse 

def strem_file(request, *args, **kwargs): 
    file_url = "http://remote-host.com/file/123.txt" 

    r = requests.get(file_url, stream=True) 

    return StreamingHttpResponse(streaming_content=r) 

強制的にブラウザにファイルをダウンロードする必要があります。 (ちょうどページ上のファイルの内容を表示しない)

resp = StreamingHttpResponse(streaming_content=r) 
resp['Content-Disposition'] = 'attachment; filename="123.txt"'