sga*_*tto 4 django file-transfer graphql graphene-python
我目前使用的是graphene-django v2.0,我对如何上传和下载图像等文件一无所知,有没有人举过一个查询示例,您可以在其中下载图像,也可以在变量中上传一?
上载
您无需发明自己的前端代码即可将文件上传添加到变异中-现有的软件包已在执行此操作。例如,如果您使用的是Apollo,则为apollo-upload-client。
要在后端接收上传的文件,这些文件将在dictionary中可用request.FILES。因此,处理文件上传的任何变异都需要检查info.context.FILES.items以获取和保存文件数据。此代码的具体细节将取决于保存文件的最终目标。
(更新)但是,如果可能的话,我建议不要使用graphene-django上传文件,因为它在后端和前端都会增加大量的复杂性。我的团队最终取消了我们的可工作的graphene-django文件上传代码,并将其替换为标准的Django文件上传。
资料下载
对于下载,我建议不要对实际下载使用graphQL。而是创建一个Django函数视图,该视图返回HttpResponse或FileResponse并设置Content-Disposition标头。就像是
from django.http import HttpResponse
def download(request):
... do stuff to get file contents and file name and mime_type
response = HttpResponse(file_contents, content_type=mime_type)
response['Content-Disposition'] = 'attachment; filename="{}"'.format(file_name)
return response
Run Code Online (Sandbox Code Playgroud)
然后将此下载路径添加到您的urls.py以及graphQL查询响应中。因此,可以使用graphQL来获取下载路径,但实际上下载文件将是常规的Django页面。
| 归档时间: |
|
| 查看次数: |
2577 次 |
| 最近记录: |