Django高級——上傳圖片

-- 上傳圖片

-- 注意點:

    1.在輸入框標籤input添加type='file'屬性,且name=''表示鍵;

    2.FILES在請求POST,且<form>表單帶有enctype="multipart/form-data"的

      屬性時纔可以包含數據;否則FILES爲一個空的類似於字典的對象;

-- 將屬性定義爲models.ImageField類型;(模型類)

pic = models.ImageField(upload_to='cars/')

-- 如果屬性類型爲ImageField需要安裝包Pillow

pip install Pillow==3.4.1

-- 圖片存儲路徑

    -- /static/media/cars/圖片文件

    -- setting.py文件,增加media_root項;

MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media')

-- 實例

-- views.py

# def uploadHandle(request):
# # 獲取圖片的對象
# pic1 = request.FILES['pic1']
# # 拼接圖片所在完整路徑
# picName = os.path.join(settings.MEDIA_ROOT, pic1.name)
# # IO操作,chunks()一點點的讀取;
# with open(picName, 'w') as pic:
# for c in pic1.chunks():
# pic.write(c)
# # 返回圖片路徑
# return HttpResponse('<img src="/static/media/%s/">'%pic1.name)

-- urls.py

# url(r'^uploadPic/$', views.uploadPic),
# url(r'^uploadHandle/$', views.uploadHandle),

-- uploadPic.html

<form action="/uploadHandle" method="post"
# 表單傳遞到/uploadHandle路徑下,同時定義視圖函數uploadHandle讀取返回圖片;
enctype="multipart/form-data">
<input type="file" name="pic1">
<br>
<input type="submit" name="上傳">
</form>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章