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 上传的进度条