Django + FastDFS (分布式远程服务器存储文件)
之前随笔过一篇Docker来搭建分布式文件系统FastDfs就跳过了
https://www.cnblogs.com/xcsg/p/10901461.html
FastDFS的Python (django客户端)
1.安装依赖
#安装库
pip install py3Fdfs
pip install mutagen
pip isntall requests
2.配置settings.py
# 激活重写存储文件引擎方法
DEFAULT_FILE_STORAGE = 'utils.fdfs.storage.FDFSStorage'
# 图片存阿里云的地址
FDAS_URL = 'http://39.97.117.229:8888/' # 存进阿里云服务器里因为没有后缀(jpg/png),图片连接要放进 img 标签里才能显示
# <img src="http://39.106.64.101:8888/group1/M00/00/00/rBHmx10A9JmAVEKNAABf71XWOL06003319" alt=""># 配置 Fastdfs 配置文件
FDFS_CLIENT_CONF = os.path.join(BASE_DIR, 'client.conf')
3.配置client.conf 文件
connect_timeout=30
network_timeout=60
tracker_server=39.97.117.229:22122
log_level=info
use_connection_pool = false
connection_pool_max_idle_time = 3600
load_fdfs_parameters_from_tracker=false
use_storage_id = false
storage_ids_filename = storage_ids.conf
http.tracker_server_port=80
4.封装上传文件 fastdfs.py
from django.core.files.storage import Storage
from fdfs_client.client import Fdfs_client,get_tracker_conf
from video_back.settings import FDAS_URL,FDFS_CLIENT_CONF # 重写存储引擎方法
class FastDfsStroage(Storage): def __init__(self, base_url = None, client_conf = None):
"""
初始化对象
:param base_url:
:param client_conf:
"""
if base_url is None:
base_url = FDAS_URL
# 'http://39.106.64.101:8888/'
self.base_url = base_url if client_conf is None:
client_conf = FDFS_CLIENT_CONF
# FDFS_CLIENT_CONF = os.path.join(BASE_DIR, 'client.conf')
self.client_conf = client_conf def _open(self, name, mode = 'rb'): """
打开文件
:param name:
:param mode:
:return:
"""
pass def _save(self,content):
"""
保存文件
:param name: 传入文件名
:param content: 文件内容
:return:保存到数据库中的FastDFSDE文件名
""" client = Fdfs_client(get_tracker_conf(FDFS_CLIENT_CONF))
ret = client.upload_by_buffer(content.read())
if ret.get("Status") != "Upload successed.":
raise Exception("upload file failed")
file_name = ret.get("Remote file_id")
#byte转str
file_name = str(file_name,encoding = "utf-8")
return file_name def exists(self, name):
"""
检查文件是否重复, FastDFS自动区分重复文件
:param name:
:return:
"""
return False def url(self, name):
"""
获取name文件的完整url
:param name:
:return:
"""
return self.base_url + name
5.上传逻辑views.py
#导入封装类
from .fastdfs import *
from django.http import JsonResponse
def upload(request):
img = request.FILES.get('file')
img_fast = FastDfsStroage()
#存入远程服务器
ret = img_fast._save(img)
#返回存入图片的url
url = img_fast.url(ret)
if url:
return JsonResponse({'url':url})
效果如下:
Django + FastDFS (分布式远程服务器存储文件)的更多相关文章
- 【JMeter】【性能测试】分布式远程服务器
jmeter分布式简单步骤说明: 1:添加远程服务器IP到配置文件 在JMETER_HOME / bin / jmeter.properties中,找到名为“ remote_hosts ” 的属性,并 ...
- FastDFS分布式图片服务器搭建
一:Fastdfs简介 1. 什么是FastDFS FastDFS 是用 c 语言编写的一款开源的分布式文件系统.FastDFS 为互联网量身定制, 充分考虑了冗余备份.负载均衡.线性扩容等机制,并注 ...
- FastDFS 分布式文件系统的安装与使用---两台服务器搭建FastDFS环境
写在前面 有不少小伙伴在实际工作中,对于如何存储文件(图片.视频.音频等)没有一个很好的解决思路.都明白不能将文件存储在单台服务器的磁盘上,也知道需要将文件进行副本备份.如果自己手动写文件的副本机制, ...
- FastDFS 与 Nginx 实现分布式图片服务器
FastDFS 与 Nginx 实现分布式图片服务器 本人的 Ubuntu18.04 用户名为 jj 点我下载所有所需的压缩包文件 一.FastDFS安装 1.安装 fastdfs 依赖包 ① 解压 ...
- django中使用FastDFS分布式文件系统接口代码实现文件上传、下载、更新、删除
运维使用docker部署好之后FastDFS分布式文件系统之后,提供给我接口如下: fastdfs tracker 192.168.1.216 192.168.1.217 storage 192.16 ...
- 最新JetBrainsPyCharm自动部署Python(Django,tornado等)项目至远程服务器
每次开发Python项目时,对于所有Python开发人员来说,最枯燥的不是修改代码,而是实时将自己的代码上传至远程服务器,进行测试或者部署,本人最初开发也是这样,通过使用Xshell 5,WinSCP ...
- Dubbo入门到精通学习笔记(八):ActiveMQ的安装与使用(单节点)、Redis的安装与使用(单节点)、FastDFS分布式文件系统的安装与使用(单节点)
文章目录 ActiveMQ的安装与使用(单节点) 安装(单节点) 使用 目录结构 edu-common-parent edu-demo-mqproducer edu-demo-mqconsumer 测 ...
- 一文搞定FastDFS分布式文件系统配置与部署
Ubuntu下FastDFS分布式文件系统配置与部署 白宁超 2017年4月15日09:11:52 摘要: FastDFS是一个开源的轻量级分布式文件系统,功能包括:文件存储.文件同步.文件访问(文件 ...
- FastDFS分布式文件系统
FastDFS分布式文件系统 阅读目录 相关文章 1 分布式文件系统介绍 2 系统架构介绍 3 FastDFS性能方案 4 Linux基本命令操作 5 安装VirtualBox虚拟机并配置Ubuntu ...
随机推荐
- guitar pro系列教程(四): 详解Guitar Pro主音量自动化设置
让我们继续进行guitar pro 7系列教程 在上一章节中我们讲到插入速度自动化设置,本章节我们将采用图文结合的方式详细的讲解guitar pro 7主音量的相关自动化设置分别是:插入主音量自动化, ...
- 抓包工具fiddler使用-初级
参考 https://kb.cnblogs.com/page/130367/#introduce
- Codeforces Round #674 (Div. 3) F. Number of Subsequences 题解(dp)
题目链接 题目大意 给你一个长为d只包含字符'a','b','c','?' 的字符串,?可以变成a,b,c字符,假如有x个?字符,那么有\(3^x\)个字符串,求所有字符串种子序列包含多少个abc子序 ...
- Java基础教程——System类
System类 java.lang.System类代表当前Java程序的运行平台. |-可以做输入输出,垃圾回收:(此处不讲) |-可以获取时间: |-可以获取环境变量: |-可以获取系统信息: |- ...
- 企业安全03Django GIS SQL注入漏洞CVE-2020-9402
Django GIS SQL注入漏洞CVE-2020-9402 一.漏洞描述 Django是Django基金会的一套基于Python语言的开源Web应用框架.该框架包括面向对象的映射器.视图系统.模板 ...
- Android动画系列之属性动画
原文首发于微信公众号:jzman-blog,欢迎关注交流! 属性动画相较帧动画和补间动画更强大,帧动画和补间动画只能应用于 View 及其子类,而属性动画可以修改任何对象的属性值,属性值可在指定的一段 ...
- 基于ARM64的Qemu/KVM学习环境搭建
作者:pengdonglin137@163.com 在没有aarch64架构的开发板的情况下,可以使用Qemu来模拟一个支持KVM的AArch64位的host,然后再在其上运行一个开启KVM加速的Qe ...
- Cys_Control(四) MTabControl
一.查看TabControl原样式 <ControlTemplate TargetType="{x:Type TabControl}"> <Grid x:Name ...
- 庐山真面目之六微服务架构Consul集群、Ocelot网关集群和Nginx版本实现
庐山真面目之六微服务架构Consul集群.Ocelot网关集群和Nginx版本实现 一.简介 在上一篇文章<庐山真面目之五微服务架构Consul集群.Ocelot网关和Nginx版本实 ...
- Python妙用re.sub分析正则表达式匹配过程
声明:本文所使用方法为老猿自行研究并编码,相关代码版权为老猿所有,禁止转载文章,代码禁止用于商业用途! 在<第11.23节 Python 中re模块的搜索替换功能:sub及subn函数>介 ...