0
在我的一個django項目中,我試圖上傳文件。文件可以是視頻文件,可以大到20 MB。我正在嘗試使用django文檔中提供的celery和upload_file_handler方法來上傳它。需要Django大文件的例子上傳文件處理器方法
我做了什麼。
class MyVideo(models.Model):
user = models.ForeignKey(User)
video = models.FileField(null=True, blank=True, upload_to="video")
def __unicode__(self):
return self.user.username
在forms.py
class VideoForm(forms.ModelForm):
video = forms.FileField(required=False)
class Meta:
model = MyVideo
exclude = ['user']
def clean_video(self):
video = self.cleaned_data['video']
if video and video._size > (10 * 1024 * 1024):
raise forms.ValidationError("only 10 MB video is allowed")
return self.cleaned_data['video']
在View.py
class CreateDigitalAssetsView(LoginRequiredMixin, CreateView):
template_name = "video_create.html"
form_class = VideoForm
def get_success_url(self):
return reverse("video_url")
def form_valid(self, form):
user = self.request.user
video = form.cleaned_data['video']
if video:
handle_uploaded_file(video)
# stick here what to do next.
def handle_uploaded_file(f):
filename, extension = os.path.splitext(video.name)
with open('media/video/'+filename, 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
我在這裏堅持呼籲handled_uploaded_file後下一步要做什麼。請指導我如何使用hanldle_uploaded_file保存在django模型中的這個書面文件。
想這一點,工作細地方。謝謝。但它在服務器上發出IO錯誤,稱爲「沒有這樣的目錄'」media /%s「%relative_path'存在。 – user2534069
服務器上媒體根目錄的聲音位於不同的位置。您的settings.py包含MEDIA_ROOT條目嗎?如果是這樣,你應該使用它作爲基礎,而不是「媒體/」。有關詳細信息,請參閱https://docs.djangoproject.com/en/dev/ref/settings/#media-root。 – georgeofallages
是的,你說得對。 MEDIA_ROOT指向BASE_DIR +媒體 – user2534069