91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • Django框架如何實現文件上傳與自定義圖片上傳路徑、上傳文件名操作

Django框架如何實現文件上傳與自定義圖片上傳路徑、上傳文件名操作

發布時間:2021-07-24 13:46:02 來源:億速云 閱讀:188 作者:小新 欄目:開發技術

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

具體如下:

文件上傳

1、創建上傳文件夾

在static文件夾下創建uploads用于存儲接收上傳的文件

在settings中配置,

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

2、定義上傳表單

<form action="{% url 'app:do_upload' %}" 
method="post" enctype="multipart/form-data">

文件數據存儲在request.FILES屬性中

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

<form method='post' action='x' enctype='multipart/form-data'>
 {% csrf_token %}
 <input type='file' name='icon'>
 <input type='submit' value='上傳'>
<form>

3、手動存儲文件

存儲到關聯用戶的表字段中

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內置存儲

  • ImageField

    • 要導入pillow模塊

  • FileField

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

  • 存儲的時候,數據庫存儲的是路徑

  • 存儲在MEDIA_ROOT

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

圖片上傳中,如果不對上傳的文件名做處理,很容易引起文件名重復,這會覆蓋之前上傳的圖片,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上傳時,生成文件名的處理方式。如果 upload_to 的參數是可調用的,則直接調用來生成文件名(包括靜態文件夾后的文件路徑)。要自定義上傳文件名就從這里著手。

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)

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

以上是“Django框架如何實現文件上傳與自定義圖片上傳路徑、上傳文件名操作”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汝州市| 台州市| 新津县| 普陀区| 屯昌县| 五大连池市| 海晏县| 平陆县| 宁化县| 天津市| 岳普湖县| 兴安县| 东明县| 古田县| 新疆| 乾安县| 搜索| 通城县| 枣庄市| 永靖县| 怀远县| 南充市| 曲松县| 乌拉特中旗| 乃东县| 双江| 北安市| 建瓯市| 汶上县| 驻马店市| 巫山县| 尼木县| 凯里市| 海丰县| 上林县| 福安市| 军事| 萨嘎县| 通化县| 伊通| 信宜市|