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



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM