django的上傳檔案
models.py #encoding=utf-8 from django.db import models class Photo(models.Model): file = models.FileField(upload_to='photos/%Y/%m/%d',blank=True,null=True) 一個檔案上傳字段
例如,你的 MEDIA_ROOT 設定為 '/home/media' , upload_to 設定為 'photos/%Y/%m/%d' 。其中 '%Y/%m/%d' 部分是日期格式化串: '%Y' 為4位的年份, '%m' 是兩位月份, '%d' 是兩位的日期。如果你在2007年1月15日上傳檔案,這個檔案就會被儲存在/home/media/photos/2007/01/15 目錄下。 views.py檔案 from django.http import HttpResponseRedirect from django.http import HttpResponse from django.shortcuts import render_to_response from django.conf import settings import os def upload_file(request): if request.method == 'POST': file = request.FILES.get('filename','') filename=file.name fname = os.path.join(settings.MEDIA_ROOT,filename) if os.path.exists(fname): 判斷檔案夾是否存在 os.remove(fname) dirs= os.path.dirname(fname) 如果fname是完整路徑 則輸出完整的 否則為空 if not os.path.exists(dirs): 判斷這個路徑是否存在 os.makedirs(dirs) 如果不存在則建立這個目錄 if os.path.isfile(fname): 判斷是否為檔案,是true,不是False, os.remove(fname) fp = open(fname, 'wb') 讀寫打開這個要上傳的檔案 for content in file.chunks(): 寫 fp.write(content) fp.close() return HttpResponse('ok') 如果上傳成功則傳回ok return render_to_response("upload.html",locals()) upload.html <form method="POST" action="/file/" enctype="multipart/form-data" name="form"> 選擇檔案: <input type="file" name="filename" /><br> <input type="submit" value="上傳"> </form> urls.py (r'^file/$','upload.views.upload_file'), settings: MEDIA_ROOT = 'c:/mm' 将上傳的檔案儲存到c:/mm檔案夾下 |