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 ...
随机推荐
- 【VUE】7.组件通信(二)子组件修改父组件
1. 前提&知识点 1./components/Father.vue 是父组件, Son.vue 是子组件 2.子组件修改父组件 emit 2. 组件通信 1. 首先对子组件绑定一个事件 ch ...
- Linux查看并杀死被占用的端口
sudo apt-get install lsof //安装lsof sudo lsof -i:端口号 //查找对应的进程号 sudo kill -9 进程号 //杀死对应的进程
- 编曲技巧:使用FL Studio来制作停顿的效果
停顿效果是一种在音乐创作中非常常用的音效,它能起到缓冲的作用,而且能使这段旋律更具节奏感,在比较激情的歌曲中尤为常见.例如知名歌手王力宏演唱的<火力全开>中就使用了停顿效果,为歌曲加了不少 ...
- A:与指定数字相同的数的个数
总时间限制: 1000ms 内存限制: 65536kB 描述 输出一个整数序列中与指定数字相同的数的个数. 输入 输入包含三行:第一行为N,表示整数序列的长度(N <= 100):第二行为N ...
- 什么,kafka能够从follower副本读数据了 —kafka新功能介绍
最近看了kafka2.4新版本的一些功能特性,不得不说,在kafka2.0以后,kafka自身就比较少推出一些新的feature了,基本都是一些修修补补的东西.倒是kafka connect和kafk ...
- Map<String,Object>接收参数,Long类型降级为Integer,报类型转换异常
前言 今天看群里小伙伴问了一个非常有意思的问题: 使用 Map<String,Object> 对象接收前端传递的参数,在后端取参时,因为接口文档中明确该字段类型为 Long ,所以对接收的 ...
- jupyter notebook 将当前目录设置为工作目录
生成配置文件首先打开你的CMD或者是终端(Linux),在你配置过环境变量的基础下,你直接输入以下命令: jupyter notebook --generate-config 然后打开生成的配置文件, ...
- python批量definition query
import arcpy mxd = arcpy.mapping.MapDocument("current") for lyr in arcpy.mapping.ListLayer ...
- moviepy音视频开发:audio_normalize调整剪辑音量大小到正常
☞ ░ 前往老猿Python博文目录 ░ 概述 audio_normalize函数用于将一个剪辑的音量大小调整到正常,调整的思路就是将剪辑中音频帧数据的最大值取出来,当其值小于1时,表示剪辑的音量偏小 ...
- 第二十二章、 Model/View便利类树型部件QTreeWidget
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 树部件(Tree Widget)是Qt Designer中 Item Widgets(It ...