我建议你在Django中使用Azure存储系统
。
请按照这个教程来配置你的Azure存储账户到你的项目中。
AZURE_STORAGE_ACCOUNT = "<account_name>"
AZURE_STORAGE_KEY = "<account_key>"
AZURE_STORAGE_CONTAINER = "<default_storage_container>"
STATICFILES_STORAGE = "<my_project>.storage.AzureStorage"
STATIC_URL = "http://<storage account>.blob.core.windows.net/<default_storage_container>/"
MEDIA_URL = 'http://storage.pepperdeck.com/<media_container>/'
您可以在
这里和
这里获得更多详细信息。
更新回答:
实际上,我昨天提供的Django-Azure-Storage
本质上是azure存储SDK
的一个适配器调用。你在回复中提到的媒体容器
实际上不需要配置,因为你只涉及到azure存储。
根据您的需求,只需使用Azure存储Python SDK。
请按照以下步骤进行操作。
步骤1:将您想要下载的blob名称绑定到您的超链接
中,并在用户单击时将blob名称
作为参数传递给后端。
步骤2:获取Blob URL。
def GetBlobUrl():
blobService = BlockBlobService(account_name=accountName, account_key=accountKey)
sas_token = blobService.generate_container_shared_access_signature(containerName,ContainerPermissions.READ, datetime.utcnow() + timedelta(hours=1))
return 'https://' + <your_account_name> + '.blob.core.windows.net/' + <your_container_name> + '/<your_blob_name>?' + sas_token
步骤3:通过StreamingHttpResponse
在浏览器中下载文件。
import requests
from django.http import StreamingHttpResponse
def stream_file(request, *args, **kwargs):
file_url = "<blob url you get in the Previous step >"
r = requests.get(file_url, stream=True)
resp = StreamingHttpResponse(streaming_content=r)
resp['Content-Disposition'] = 'attachment; filename="<your blob name>"'
您还可以参考以下主题:
1.将远程URL的文件流式传输到Django视图响应
2.如何在Django中向客户端流式传输文件
希望对您有所帮助。