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>