fastdfs上传失败的原因

无法获取服务端连接资源:找不到可用的tracker

第一次使用fastdfs上传图片,多次失败后发现是linux防火墙没有关闭,导致连接异常,关闭防火墙后可以正常上传。
查看防火墙状态:systemctl status firewalld.service
关闭指令:systemctl stop firewalld
开启指令:systemctl start firewalld
开机自动关闭:systemctl disable firewalld
开机自动启动:systemctl enable firewalld

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FastDFS 是一个开源的轻量级分布式文件系统,它主要解决了海量文件存储问题,具有高性能、高可靠性、易扩展性等特点。下面介绍一下 FastDFS 的文件上、删除和预览操作。 1. 文件上 FastDFS 的文件上分为两步,第一步是上文件到 FastDFS 服务器,第二步是保存文件元数据到数据库中。 上文件到 FastDFS 服务器: ```python import os from fdfs_client.client import Fdfs_client # 定义 FastDFS 配置文件路径 FDFS_CLIENT_CONF = '/etc/fdfs/client.conf' # 创建 Fdfs_client 对象 client = Fdfs_client(FDFS_CLIENT_CONF) # 上本地文件 ret = client.upload_by_filename('/path/to/local/file') if ret.get('Status') == 'Upload successed.': # 获取文件 ID file_id = ret.get('Remote file_id') else: # 上失败 file_id = None ``` 保存文件元数据到数据库中: ```python from sqlalchemy.orm import sessionmaker from models import File from database import engine # 创建数据库连接 Session = sessionmaker(bind=engine) session = Session() # 创建文件对象并保存到数据库中 file = File(file_id=file_id, filename='example.txt', size=os.path.getsize('/path/to/local/file')) session.add(file) session.commit() ``` 2. 文件删除 FastDFS 的文件删除也分为两步,第一步是删除 FastDFS 服务器上的文件,第二步是从数据库中删除文件元数据。 删除 FastDFS 服务器上的文件: ```python from fdfs_client.client import Fdfs_client # 创建 Fdfs_client 对象 client = Fdfs_client(FDFS_CLIENT_CONF) # 删除文件 ret = client.delete_file(file_id) if ret == 0: # 删除成功 pass else: # 删除失败 pass ``` 从数据库中删除文件元数据: ```python from sqlalchemy.orm import sessionmaker from models import File from database import engine # 创建数据库连接 Session = sessionmaker(bind=engine) session = Session() # 获取文件对象并从数据库中删除 file = session.query(File).filter_by(file_id=file_id).first() if file: session.delete(file) session.commit() ``` 3. 文件预览 FastDFS 的文件预览需要在客户端下载文件并提供预览功能,具体实现方式根据业务需求而定。例如,可以使用 Flask 框架提供 Web 服务,通过浏览器访问预览页面。 ```python from flask import Flask, send_file from fdfs_client.client import Fdfs_client # 创建 Flask 应用 app = Flask(__name__) # 定义 FastDFS 配置文件路径 FDFS_CLIENT_CONF = '/etc/fdfs/client.conf' @app.route('/preview/<file_id>') def preview(file_id): # 创建 Fdfs_client 对象 client = Fdfs_client(FDFS_CLIENT_CONF) # 下载文件到本地 ret = client.download_to_buffer(file_id) if ret.get('Content') is not None: # 返回文件内容 return send_file(ret.get('Content'), attachment_filename='example.txt') else: # 下载失败 return 'Download failed.' if __name__ == '__main__': app.run() ``` 在浏览器中访问 http://localhost:5000/preview/{file_id} 即可预览文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值