真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Django框架如何實(shí)現(xiàn)文件上傳與自定義圖片上傳路徑、上傳文件名操作-創(chuàng)新互聯(lián)

這篇文章主要介紹Django框架如何實(shí)現(xiàn)文件上傳與自定義圖片上傳路徑、上傳文件名操作,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括瑯琊網(wǎng)站建設(shè)、瑯琊網(wǎng)站制作、瑯琊網(wǎng)頁制作以及瑯琊網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,瑯琊網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到瑯琊省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

具體如下:

文件上傳

1、創(chuàng)建上傳文件夾

在static文件夾下創(chuàng)建uploads用于存儲(chǔ)接收上傳的文件

在settings中配置,

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

2、定義上傳表單

文件數(shù)據(jù)存儲(chǔ)在request.FILES屬性中

文件上傳必須使用POST請求方式


 {% csrf_token %}
 
 

3、手動(dòng)存儲(chǔ)文件

存儲(chǔ)到關(guān)聯(lián)用戶的表字段中

def savefIcon(request):
if request.method == 'POST'
 f = request.FILES['icon']
 filePath = os.path.join(settings.MEDIA_ROOT,f.name)
 with open(filePath,'wb') as fp:
  for part in f.chunks():
   fp.write(part)

4、django內(nèi)置存儲(chǔ)

  • ImageField

    • 要導(dǎo)入pillow模塊

  • FileField

  • 從request.FILES將文件獲取出來,直接賦值給字段

  • 存儲(chǔ)的時(shí)候,數(shù)據(jù)庫存儲(chǔ)的是路徑

  • 存儲(chǔ)在MEDIA_ROOT

自定義圖片上傳路徑和上傳文件名

圖片上傳中,如果不對上傳的文件名做處理,很容易引起文件名重復(fù),這會(huì)覆蓋之前上傳的圖片,django提供了自定義上傳文件名的方法。

def generate_filename(self, instance, filename):
 """
 Apply (if callable) or prepend (if a string) upload_to to the filename,
 then delegate further processing of the name to the storage backend.
 Until the storage layer, all file paths are expected to be Unix style
 (with forward slashes).
 """
 if callable(self.upload_to):
  filename = self.upload_to(instance, filename)
 else:
  dirname = datetime.datetime.now().strftime(self.upload_to)
  filename = posixpath.join(dirname, filename)
 return self.storage.generate_filename(filename)

上面的代碼是django中對ImageField上傳時(shí),生成文件名的處理方式。如果 upload_to 的參數(shù)是可調(diào)用的,則直接調(diào)用來生成文件名(包括靜態(tài)文件夾后的文件路徑)。要自定義上傳文件名就從這里著手。

import uuid
from django.db import models
def image_upload_to(instance, filename):
 return 'original_image/{uuid}/{filename}'.format(uuid=uuid.uuid4().hex, filename=filename)
class TestImageUpload(models.Model):
 image = models.ImageField(upload_to=image_upload_to)

按照上面的方式,就可以按照自己的意愿隨意的處理文件名了(函數(shù)的參數(shù)個(gè)數(shù)是固定的)。

以上是“Django框架如何實(shí)現(xiàn)文件上傳與自定義圖片上傳路徑、上傳文件名操作”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享標(biāo)題:Django框架如何實(shí)現(xiàn)文件上傳與自定義圖片上傳路徑、上傳文件名操作-創(chuàng)新互聯(lián)
URL地址:http://weahome.cn/article/ceejos.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部