Django modelForm中的文件上传

时间:2013-06-27 08:49:26

标签: django google-app-engine file-upload python-2.7 django-forms

我正在尝试上传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})

如何将文档上传到google cloud sql?

1 个答案:

答案 0 :(得分:1)

您可以使用Uploadcare来解决难题,当您对主机文件系统(GAE,heroku,共享托管或诸如此类的东西)几乎没有控制权时,它可以提供帮助。上传的文件将存储在Uploadcare中,您将在数据库中存储文件UUID或URL。

有Django包:pyuploadcare

披露:我是Uploadcare开发人员之一,并且发布此信息不是为了无耻地推广该服务,而是因为它是为解决此类案件而构建的。