代码之家  ›  专栏  ›  技术社区  ›  Marcus Grass

Django将文件保存到磁盘文件夹的最简单方法,无需使用模型

  •  0
  • Marcus Grass  · 技术社区  · 6 年前

    我正试图将上传的文件直接保存到我的文件夹媒体/文件中,正如下面所述 thread

    这里是我的表单代码:

    from django import forms
    
    class UploadForm(forms.Form):
        title=forms.CharField(max_length=50)
        file=forms.FileField()
    

    以下是我的视图代码:

    def uploadview(request):
        if request.method == 'POST':
            form=UploadForm(request.POST, request.FILES)
            if form.is_valid() and request.FILES['file']:
                uploaded_filename=request.FILES['file'].name
                full_filename=os.path.join('media', 'files', uploaded_filename)
                fout=open(full_filename, 'wb+')
                file_content=ContentFile(request.FILES['file'].read())
                for chunk in file_content.chunks():
                    fout.write(chunk)
                fout.close()
                return HttpResponseRedirect('/App/')
        else:
            form=UploadForm()
    
        return render(request, 'App/uploads.html', {'form':form})
    

    我没有收到任何错误,只是重定向到/应用程序/页面,没有下载任何文件。我的目标是不能够在磁盘上完成文件 就像您可以在PHP中使用这个简单的命令一样。

    move_uploaded_file(($_FILES["filetoupload"]["tmp_name"]), $target_file)

    1 回复  |  直到 6 年前
        1
  •  2
  •   A. Rose    6 年前

    请记住在表单中设置enctype,如:

    enctype="multipart/form-data"
    

    如果我试图上传一个文件但没有看到它,但没有收到任何错误,我通常会忘记这一点。

    django中的文件上传有一个很好的参考:

    https://simpleisbetterthancomplex.com/tutorial/2016/08/01/how-to-upload-files-with-django.html