使用StreamHttpResponse
和 FileResponse
处理数据文件下载
demo
from django.http import StreamingHttpResponse, FileResponse
from rest_framework.decorators import action
from urllib.parse import quote
import subprocess
class Demo(ModelViewSet):
as_attachment = True
@action(detail=False)
def demo(self, request):
try:
s = subprocess.Popen("ls -la", shell=True, bufsize=4096, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
filename = "demo.data"
# return self.__stream_response_recv(s.stdout, filename)
return __file_response_recv(s.stdout, filename)
except Exception as e:
print(e)