Django modelForm 中的文件上传

Posted

技术标签:

【中文标题】Django modelForm 中的文件上传【英文标题】:File Upload in Django modelForm 【发布时间】:2013-06-24 16:34:51 【问题描述】:

我正在尝试在 appengine-django 中上传文档。 使用纯 django 代码 [ 使用 python manage.py runsever ] 成功上传文档。 但是当我试图用 appengine 项目运行 django 时,它给了我错误,

[Errno 30] Read-only file system: u'/home/nishant/workspace1/problemdemo/uploaded_files/1372313114_43_nishant26062013.zip'

这个错误是因为Developers have read-only access to the filesystem on App Engine.引起的

还有其他方法可以将文档上传到 google cloud sql 吗?

这是我的代码,

models.py

from django.db import models
import time

# Create your models here.

def get_upload_file_name(instance,filename):
    return "uploaded_files/%s_%s" % (str(time.time()).replace('.','_'),filename)


class Candidate(models.Model):
    title=models.CharField(max_length=20)
    resume=models.FileField(upload_to=get_upload_file_name)

    def __unicode__(self):
        return self.title

forms.py

from django import forms
from actualproblem.models import Candidate

class TestForm(forms.ModelForm):

    class Meta:

        model=Candidate

        fields=('title','resume',)

views.py

# Create your views here.
from django.shortcuts import render
from actualproblem.forms import TestForm

def sampletest(request):


    if request.method=='POST':        
        form = TestForm(request.POST,request.FILES)
        if form.is_valid():
            form.save()

    else:
        form=TestForm()


    return render(request,'profile.html','form':form)

如何将文档上传到谷歌云 sql ?

【问题讨论】:

您可以在数据库中使用 BLOB 字段 @J.Ghyllebert 抱歉,django 中没有像 BLOB 这样的字段。 看看here提供的答案 和here @J.Ghyllebert,我正在尝试,但没有成功。 【参考方案1】:

您可以使用Uploadcare 来解决这个难题,它可以在您对主机文件系统(GAE、heroku、共享主机等)几乎没有控制权的情况下提供帮助。上传的文件将存储在 Uploadcare 中,您将在数据库中存储文件 UUID 或 URL。

有Django包:pyuploadcare

披露:我是 Uploadcare 开发人员之一,发布此消息并不是为了无耻地宣传该服务,而是因为它旨在解决此类案例。

【讨论】:

以上是关于Django modelForm 中的文件上传的主要内容,如果未能解决你的问题,请参考以下文章

ModelForm (Django) 中 FileField 上传的进度条

ModelForm (Django) 中 FileField 上传的进度条

基于下拉值选择显示Django ModelForm中的链接

django如何取用户上传的头像

在没有 django ModelForm 的情况下从用户上传图像的问题

django文件上传不起作用