標籤:read write div 請求 儲存檔案 ued mod har ade
上傳檔案1
class UserForm(forms.Form): name = forms.CharField() headImg = forms.FileField()def regist(req): if req.method == ‘POST‘: uf = UserForm(req.POST, req.FILES) if uf.is_valid(): print(uf.cleaned_data[‘name‘]) #通過clean_data擷取欄位 print(req.FILES) #類字典對象<MultiValueDict: {‘headImg‘: [<InMemoryUploadedFile: Chrysanthemum.jpg (image/jpeg)>]}>
print(uf.cleaned_data[‘headImg‘]) #上傳檔案的名字 print(uf.cleaned_data[‘headImg‘].name) #上傳檔案的名字 print(uf.cleaned_data[‘headImg‘].size) fp = open(‘/tmp/img/‘+uf.cleaned_data[‘headImg‘].name, ‘wb‘) #開啟二進位檔案用於儲存 img = uf.cleaned_data[‘headImg‘].read() fp.write(img) fp.close() return HttpResponse(‘ok‘) #成功返回ok,不會執行到下方的return else: uf = UserForm() #當傳入空,即綁定失敗,被執行,然後執行後邊,第一次請求時也會被執行 return render(req, ‘regist.html‘, {‘uf‘:uf})
上傳檔案2:使用資料庫
models.py
class User(models.Model): name = models.CharField(max_length=30) sex = models.CharField(max_length=1, choices=sex_choices) headImg = models.FileField(upload_to=‘./upload‘) def __str__(self): return self.name
設定admin.py,使可以在admin管理介面操作。
from django.contrib import adminfrom blog.models import User #引入應用的表# Register your models here.admin.site.register(User) #把User註冊到admin
資料庫中欄位儲存檔案路徑,預設會在工程下組建定義的upload目錄,可以在setting.py中修改,不知道修改哪個?
修改儲存路徑後,之前上傳過的怎麼辦,複製過去並修改,還是不變?
能不能通過把兩個方法合并?通過自己的web上傳到資料
django_5:表單1——檔案上傳