首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有一个错误将文件的大小从axios更改为django。

有一个错误将文件的大小从axios更改为django。
EN

Stack Overflow用户
提问于 2019-04-21 18:44:00
回答 1查看 351关注 0票数 0

我正在构建一个react前端服务器和一个django后端服务器。

我使用axios将图像文件从react前端传输到Django后端。

但是,后端媒体文件夹中的图像文件内容不可见。

因此,我比较了传输前原始文件的大小和媒体文件夹中传输的文件的大小。

原始文件的大小为687 687个,转移的文件的大小略有增加,增至687 870个。

然而,与其从react前端服务器进行传输,

www.localhost:8000/admin

我连接到django后端服务器管理并上传了该文件,并确认它正常上传。

我认为react在传输文件的过程中似乎有一些虚拟数据。

  1. 响应axios前端代码。
代码语言:javascript
复制
export function uploadFile(file) {
    let url = `${ROOT_URL}/upload/${file.name}`;
    const formData = new FormData();
    formData.append('file', file)
    const config = { headers: { 'Content-Type': 'multipart/form-data' } };
        return (dispatch) => {
            axios.post(url, formData).then(response => {
            dispatch({
                type: UPLOAD_FILE,
                payload: response
            })
        })
  1. django rest框架后端代码
代码语言:javascript
复制
- models.py

代码语言:javascript
复制
class File(models.Model):
    file = models.FileField(blank=False, null=False)
    def __str__(self):
        return self.file.name
  • serializer.py
代码语言:javascript
复制
class FileSerializer(serializers.ModelSerializer):
    class Meta:
        model = File
        fields = ("__all__")
  • views.py
代码语言:javascript
复制
class FileUploadView(CreateAPIView):
    parser_classes = (FileUploadParser, )

    def post(self, request, filename, format=None):
        file_serializer = FileSerializer(data=request.data)
        file_obj = request.data['file']
        print(file_obj.size)

        if file_serializer.is_valid():
            file_serializer.save()
            return Response(file_serializer.data, status=status.HTTP_201_CREATED)
        else:
            return Response(file_serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我想知道为什么文件的容量增加了,为什么文件被破坏了。帮助。

================================================

图片,比较两个文件的十六进制数据。

上传图片,比较这两个文件的十六进制值​​

传输文件前面的十六进制数据。

内容-处置:表格-数据;name=“.

这似乎是传输的数据。不是PNG文件。

在将文件传递给邮递员以及响应公理时,也会发生同样的情况。

我认为我需要修改django后端中的代码。请帮帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-22 06:00:32

代码语言:javascript
复制
parser_classes = (FileUploadParser, )

我在views.py上删除了这段代码,它可以工作。

================================================

和。我试过很多种方法。

代码语言:javascript
复制
from django import forms
from .models import File

class FileForm(forms.ModelForm):
    class Meta:
        model = File
        fields = ('file', )

创建FileForm。

代码语言:javascript
复制
def fileUpload(request):
    form = FileForm(request.POST, request.FILES)
    form.save()

它也能用。

这一次,这似乎是一个机会,可以详细阅读DRF的django文档。

我希望这篇文章能有所帮助。对于像我这样的新开发人员

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55785675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档