有什么办法可以使用Django Response从远程URL流式传输文件(而无需在本地下载文件)?
# view.py
def file_recover(request, *args, **kwargs):
file_url = "http://remote-file-storage.com/file/111"
return StreamFileFromURLResponse(file_url)
Run Code Online (Sandbox Code Playgroud)
我们有文件存储空间(文件可能很大-1 GB或更多)。我们无法共享下载网址(存在安全问题)。通过将下载流转发到Django响应,文件流可以大大提高下载速度。
Django内置了StreamingHttpResponse类,应为其提供一个迭代器,该迭代器生成字符串作为内容。在下面的示例中,我正在使用requests 原始响应内容
import requests
from django.http import StreamingHttpResponse
def strem_file(request, *args, **kwargs):
r = requests.get("http://host.com/file.txt", stream=True)
resp = StreamingHttpResponse(streaming_content=r.raw)
# In case you want to force file download in a browser
# resp['Content-Disposition'] = 'attachment; filename="saving-file-name.txt"'
return resp
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2133 次 |
| 最近记录: |