解決圖片上傳問題:
一、from體發送
1、HTML
在表單中加入enctype="multipart/form-data;
關於表單中enctype的介紹:http://www.w3school.com.cn/tags/att_form_enctype.asp
處理表單的視圖會在request中接受到上傳文件的數據。FILES是個字典,它包含每個FileField的鍵
(或者ImageField,FileField的子類)。這樣的話就可以用request.FILES['File']來存放表單中的這些數據了。
注意request.FILES只有在請求方法為POST,並且發送請求的<form>擁有enctype="multipart/form-data屬性時,
2、view處理
可以直接拿到定義的files對象,直接存到數據庫中
還可以
webImg = image.get("webImg") PATH = os.path.join(MEDIA_ROOT, webImg.name) with open(PATH, "wb+") as f: for i in webImg.chunks(): f.write(i)
二、ajax發送base64
import base64
image = data.get("brief_image") # 獲取base64編碼 strs = re.match('^data:image/(jpeg|png|gif);base64,', image) # 正則匹配出前面的文件類型去掉 image = image.replace(strs.group(), '') imgdata = base64.b64decode(image) #轉換成圖片對象 a, b = str(time.time()).split(".") path = os.path.join(os.path.join(settings.BASE_DIR, settings.MEDIA_ROOT, "activities", activity_name, "ticket"), a + ".jpg") brief_image = os.path.join("activities", activity_name, "ticket", a + ".jpg") file = open(path, 'wb') file.write(imgdata) # 保存圖片 file.close()