资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Django框架如何实现文件上传与自定义图片上传路径、上传文件名操作-创新互联

这篇文章主要介绍Django框架如何实现文件上传与自定义图片上传路径、上传文件名操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

创新互联建站服务项目包括琅琊网站建设、琅琊网站制作、琅琊网页制作以及琅琊网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,琅琊网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到琅琊省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

具体如下:

文件上传

1、创建上传文件夹

在static文件夹下创建uploads用于存储接收上传的文件

在settings中配置,

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

2、定义上传表单

文件数据存储在request.FILES属性中

文件上传必须使用POST请求方式


 {% csrf_token %}
 
 

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框架如何实现文件上传与自定义图片上传路径、上传文件名操作”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


分享标题:Django框架如何实现文件上传与自定义图片上传路径、上传文件名操作-创新互联
文章转载:http://cdkjz.cn/article/ceejos.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220