python - Django Rest Framework:使用 FileUploadParser 保存的文件中包含的文件上传请求标头和 webkit 边界
问题描述
我目前正在尝试使用客户端和服务器端代码构建一个应用程序。我的前端是用 React 构建的,我的后端是 Python/Django,使用 django-rest-framework。
我现在正在构建的功能是文件上传功能,它利用 Dropzone.js 库在服务器上保存和存储文件。最终我想将文件路由到 AWS S3,但我还没有完成。
我的 views.py 文件当前正在接受并保存文件,但是 webKitBoundary 和文件信息也被保存在文件中。理想情况下,我希望保存文件而不必进行文件操作以删除不必要的信息。
这是我的views.py:
class SaveFile(APIView):
authentication_classes = (CsrfExemptJWTAuthentication, )
parser_classes = (FileUploadParser, )
def post(self, request, format=None):
newFile = File()
newFile.file = request.data['file']
newFile.save()
return HttpResponse('file upload success')
我的文件模型:
class File(models.Model):
file = models.FileField(upload_to = 'files')
def __str__(self):
return self.file.name
class Meta:
db_table = "files"
我的 test.txt:
hello (.^-^),
和保存的结果:
------WebKitFormBoundaryySdQAcRrBj8kluZ5
Content-Disposition: form-data; name="file"; filename="yurrr.txt"
Content-Type: text/plain
hello (.^-^),
------WebKitFormBoundaryySdQAcRrBj8kluZ5--
我在这里发现了一个类似的问题: headers and boundary included in uploaded file django rest framework
但是,当我尝试使用 MultiPartParser 而不是 FileUploadParser 来实现建议的答案时,我的 request.data['file'] 会引发错误,因为我的 request.data 是一个空的 QueryDict。所以我什至无法处理传入的文件。
我很确定我的客户端代码很好,因为我正在使用一个非常流行的库,此外,我们可以看到文件正在保存。我更喜欢只保存文件,而不是边界/请求数据。
感谢您的帮助,非常感谢!
编辑:我愿意改用 MultiPartParser,但似乎无法让它工作。无论使用什么解析器类,我的问题的任何解决方案都可以。
解决方案
推荐阅读
- oauth-2.0 - Light-oauth hazelcast 用途
- arrays - 如何使字符串形成数组?
- excel - 无法删除 excel 名称管理器中引用已删除工作簿中的范围的命名范围
- node.js - Kotlin 多平台 node.js 项目由于“错误:找不到模块'...'”而失败
- javascript - 使用 valueAsDate 反应渲染日期输入元素
- azure-web-app-service - web.config 中无法识别的 targetFramework
- angular - 在 AWS 上部署 Angular App 以供练习
- angular - 我可以为所有项目做关于推送变更检测的架构吗?
- git - 使用来自 monorepo 的纱线工作区作为 git 模块
- filter - PNG 编码器如何选择要使用的过滤器?