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()作用


  • 相关阅读:
    Java变量相关
    centos 7安装Docker
    字符串匹配的KMP算法
    [转]关于”算法工程师/机器学习工程师”的笔试和面试总结
    希腊字母与拉丁字母的对应
    决策树和基于决策树的集成方法(DT,RF,GBDT,XGB)复习总结
    机器学习总结
    bat批处理的注释语句
    Python中使用pickle持久化对象
    怎样用通俗的语言解释REST,以及RESTful?
  • 原文地址:https://www.cnblogs.com/oklizz/p/11311853.html
Copyright © 2011-2022 走看看