在django中验证上传文件

时间:2018-12-12 13:29:37

标签: django django-forms django-rest-framework

在这里,我正在使用Django-REST框架进行文件上传,但是我没有在Django中使用模型层。所以我使用default_storage来保存上载的文件。我的问题是如何验证文件。上载的档案不应超过10mb。

class imageapi(APIView):
    def post(self, request):

        if request.method == 'POST' and request.FILES['file']:
            try:

                form = UploadFileForm(request.POST, request.FILES)
                #save_path = os.path.join(settings.MEDIA_ROOT, 'uploads', request.FILES['file'])

                save_path = str(settings.MEDIA_ROOT)+ '/uploads/'+str(request.FILES['file'])
                path = default_storage.save(str(save_path), request.FILES['file'])
                return Response({default_storage.path(path)})
            except Exception as ex:
                return Response({"DATA": str(ex)})

2 个答案:

答案 0 :(得分:1)

1。 django方式:

您可以像下面这样检查表单中文件的大小:field_name.size。这将返回字节大小。

2。服务器方式:

您可以配置前端服务器(Nginx,Apacher或您使用的任何设备),使其不接受超过10 mb的文件。这种方法更好,更安全。

答案 1 :(得分:0)

stackoverflow上有多个答案,官方docs建议在您的网络服务器上进行处理。

如果使用nginx,则可以通过使用http块中的 tempname = sb.ToString().Replace("\"", ""); {NodeName}.Nodes.Add(tempname); 来限制文件大小:

client_max_body_size