完整电商项目--(六)商品模块(5):自定义文件存储系统 - fastdfs存储

场景

  • 我们默认使用fastdfs 保存上传的文件(默认已经安装好fastdfs,不展开讲这些,先把django的业务实现)
  • 我们知道,fastdfs上传文件,会返回给我们一个 url链接,用来访问此文件
# 1. 导入FastDFS客户端扩展
from fdfs_client.client import Fdfs_client
# 2. 创建FastDFS客户端实例
client = Fdfs_client('meiduo_mall/utils/fastdfs/client.conf')
# 3. 调用FastDFS客户端上传文件发放
ret = client.upload_by_filename('/Users/zhangjie/Desktop/kk.jpeg')

ret = {
'Group name': 'group1',
'Remote file_id': 'group1/M00/00/00/wKhnnlxw_gmAcoWmAAEXU5wmjPs35.jpeg',
'Status': 'Upload successed.',
'Local file name': '/Users/zhangjie/Desktop/kk.jpeg',
'Uploaded size': '69.00KB',
'Storage IP': '192.168.103.158'
 }
 
ret = {
'Group name': 'Storage组名',
'Remote file_id': '文件索引,可用于下载',
'Status': '文件上传结果反馈',
'Local file name': '上传文件全路径',
'Uploaded size': '文件大小',
'Storage IP': 'Storage地址'
 }
当我们存储图片的时候:
  • 默认的文件存储是在本地磁盘上,这是不理想的,因为读取速度非常慢。 所以要是用fastdfs,分布式文件存储系统。 让他来帮我们存储文件。

  • 所以我们需要自定义文件存储系统,使文件通过 fastdfs存储。

怎么自定义文件存储系统?

  • 打开官方文档:编写自定义存储系统

  • 文档很清晰的描述了(我希望在这之前,你已经看那完了默认存储系统的文档资料,了解默认存储系统
    在这里插入图片描述
    再来看一下 storage类:
    在这里插入图片描述
    在这里插入图片描述

  • fastdfs 响应的是:‘group1/M00/00/00/wKhnnlxw_gmAcoWmAAEXU5wmjPs35.jpeg’,这样的url,也就是说,我们在 模型类中 ImageField字段中,实际存储的就是这样的 字符串,而 文件本身通过存储系统,保存在其他地方。

  • 我们现在要做的就是重写一个 url方法,让他返回给我们的 文件路径是完整的,带上 域名:

from django.core.files.storage import Storage
from django.conf import settings

class FdfsStorage(Storage):
    def open(self, name, mode='rb'):
        pass
	# 这个方法,我们也可以改为上面的 fastdfs存储图片的方法
    def save(self, name, content, max_length=None):
        pass

    def url(self, name):
        return settings.FDFS_URL + name
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值