zoukankan      html  css  js  c++  java
  • Django框架文件保存的流程(以及自定义FDFS)

    Django框架文件保存的流程


    自定义文件存储类过程说明

    自定义FDFS文件存储类

    from django.core.files.storage import Storage
    from django.conf import settings
    
    from fdfs_client.client import Fdfs_client
    from rest_framework.exceptions import APIException
    
    
    class FDFSStorage(Storage):
        """FDFS自定义文件存储类"""
        def __init__(self, client_conf=None, base_url=None):
            if client_conf is None:
                client_conf = settings.FDFS_CLIENT_CONF
    
            # 保存fdfs客户端配置文件路径
            self.client_conf = client_conf
    
            if base_url is None:
                base_url = settings.FDFS_URL
    
            # 保存storage中nginx的地址
            self.base_url = base_url
    
        def _save(self, name, content):
            """
            name: 上传文件的名称
            content: 包含上传文件内容的File对象,content.read()获取上传文件内容
            """
            # 将文件上传FDFS文件系统
            client = Fdfs_client(self.client_conf)
    
            # 上传文件
            res = client.upload_by_buffer(content.read())
    
            # 判断上传是否成功
            if res.get('Status') != 'Upload successed.':
                raise APIException('上传文件到FDFS失败')
    
            # 获取file_id
            file_id = res.get('Remote file_id')
            return file_id
    
        def exists(self, name):
            """
            判断上传文件的名称和文件系统中原有的文件名是否冲突
            name: 上传文件的名称
            """
            return False
    
        def url(self, name):
            """
            返回可访问到文件系统文件的完整url地址:
            name:表中文件字段存储内容
            """
            return self.base_url + name
    
    • 修改Django框架的默认文件存储类
    DEFAULT_FILE_STORAGE='meiduo_mall.utils.fdfs.storage.FDFSStorage'
    
    • def url()作用


  • 相关阅读:
    HTTP处理程序介绍
    c# Enum获取name,value和description
    如何成为优秀的软件人才
    关于系统设计分层
    从DLL中加载启动窗体
    摩斯密码
    休息下
    关于博文转载
    整合TextBox与Label 创建新控件EFLabelText
    ProC连接Oracle
  • 原文地址:https://www.cnblogs.com/oklizz/p/11311853.html
Copyright © 2011-2022 走看看