• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python3 之 天天生鲜 自定义存储的简单操作

python 搞java代码 3年前 (2022-05-21) 28次浏览 已收录 0个评论

fastDFS的安装 

    网上有介绍

下面运用在天天生鲜项目上   感受一下

配置信息

<span>#</span><span> 配置Django自定义的存储系统   #配置FdfsStorage路径<a href="https://www.gaodaima.com/tag/utils" title="查看更多关于utils的文章" target="_blank">utils</a>.<a href="https://www.gaodaima.com/tag/fastdfs" title="查看更多关于fastdfs的文章" target="_blank">fastdfs</a>.<a href="https://www.gaodaima.com/tag/storage" title="查看更多关于storage的文章" target="_blank">storage</a>下</span>
DEFAULT_FILE_STORAGE = <span>"</span><span>utils.fastdfs.storage.FdfsStorage</span><span>"</span>
<span>#</span><span> FastFDS使用的配置信息</span>
CLIENT_CONF = os.path.join(BASE_DIR, <span>"</span><span>utils/fastdfs/client.conf</span><span>"</span>)  <span>#</span><span>加入客户端配置文件路径</span>
SERVER_IP = <span>"</span><span>http://192.168.154.134:8888/</span><span>"</span>  <span>#</span><span> 存储系统的ip</span>

www#gaodaima.com来源gaodai#ma#com搞@@代~&码*网搞代码

 

 

 创建了一个包

cp  /etc/fdfs/client.conf  到这里

 

storage.py

<span>#</span><span>Django必须能够不带任何参数来实例化你的储存类。 这意味着任何设置都应该从django.conf.settings中获取</span>
<span>from</span> django.conf <span>import</span><span> settings

</span><span>#</span><span>自定义储存类必须是django.core.files.storage.Storage的子类</span>
<span>from</span> django.core.files.storage <span>import</span><span> Storage

</span><span>#</span><span> fdfs_client.client 是通过 pip install fdfs_client-py-master.zip 安装的客户端</span>
<span>from</span> fdfs_client.client <span>import</span><span> Fdfs_client
</span>
<span>class</span><span> FdfsStorage(Storage):
    </span><span>def</span> <span>__init__</span>(self,client=None,server_ip=<span>None):
        </span><span>"""</span><span>初始化</span><span>"""</span>
        <span>if</span> client <span>is</span><span> None:
            client </span>=<span> settings.CLIENT_CONF
        self.client </span>=<span> client
        </span><span>if</span> server_ip <span>is</span><span> None:
            server_ip </span>=<span> settings.SERVER_IP
        self.server_ip </span>=<span> server_ip

    </span><span>def</span> open(self, name, mode=<span>"</span><span>rb</span><span>"</span>): <span>#</span><span>这是储存类用于打开文件(例如:图片的原始命名 name)的实际工具,它必须返回File对象</span>
        <span>"""</span><span>open(name, mode="rb")[source]
        通过提供的name.打开文件。 注意虽然返回的文件确保为File对象,但可能实际上是它的子类。
        在远程文件储存的情况下,这意味着读写操作会非常慢,所以警告一下。</span><span>"""</span>
        <span>return</span><span> False

    </span><span>def</span> save(self, name, content, max_length=<span>None):
        </span><span>#</span><span>客户端</span>
        client = Fdfs_client(self.client)  <span>#</span><span>配置文件</span>
        <span>#</span><span>获取文件内容</span>
        file_data = content.read() <span>#</span><span>文件读取</span>
        <span>try</span>: 
            result = client.upload_by_buffer(file_data) <span>#</span><span> 上传缓冲文件内容</span>
        <span>except</span><span> Exception as e:</span>
            result =<span> None
      </span>
        <span>if</span> result[<span>"</span><span>Status</span><span>"</span>] == <span>"</span><span>Upload successed.</span><span>"</span>: 
            <span>#</span><span>获取文件名</span>
            <span>filename = result["Remote file_id"]</span><span>return</span><span> filename
        </span><span>else</span><span>:
            </span><span>raise</span> Exception(<span>"</span><span>cccccccccccccccccccccc</span><span>"</span><span>)

    </span><span>def</span> exists(self, name):    <span>#</span><span>name为 = save()的返回值:filename</span>
        <span>#</span><span> 由于Djnago不存储图片,所以永远返回Fasle,直接保存到FastFDS</span>
        <span>#</span><span>官方解释:</span>
        <span>"""</span><span> exists(name)[source]
        如果提供的名称所引用的文件在文件系统中存在,则返回True,否则如果这个名称可用于新文件,返回False.</span><span>"""</span>
        <span>return</span><span> False

    </span><span>def</span><span> url(self, name):
        </span><span>#</span><span>获取图片路径</span>
        <span>"""</span><span>url(name)[source]
        返回URL,通过它可以访问到name所引用的文件。 对于不支持通过URL访问的储存系统,抛出NotImplementedError异常。</span><span>"""</span>
        <span>return</span> self.server_ip+name

我的出现了问题                整了好久这个问题                 第一次练习这个项目没能解决                 时隔多月再次练习 这次必定要解决它

 

 

 如果修改数据 不修改 图片 提示报错

  filename = result["Remote file_id"] + ".jpg"
 return self.server_ip+name.split(".")[0]<br>然后就解决啦<br><br>

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python3 之 天天生鲜 自定义存储的简单操作

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址