fdfs-文件上传信息返回详情
返回信息
-
一、组名:文件上传后所在storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
-
二、虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
-
三、数据两级目录:storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
:
四、文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。
FASTDFS FileID信息
- 补充
-
合并存储:
FastDFS提供的合并存储功能,默认创建的大文件
为64MB,然后在该大文件中存储很多小文件。大文件中容纳一个小文件的空间称为一个Slot,规定Slot最小值为256字节,最大为16MB,也就是小于256字节的文件也需要占用256字节,超过16MB的文件不会合并存储而是创建独立的文件。
合并存储配置:
FastDFS提供了合并存储功能的实现,所有的配置都在tracker.conf文件之中,具体摘录如下:trunk功能启动与配置:通过tracker.conf文件启动与配置,多个配置项如下:
use_trunk_file = true #是否启用trunk存储, 默认:false不开启,true是开启
slot_min_size= 256 #单位:bytes,trunk文件最小分配单元,小于this的也会花费256bytes存储 slot_max_size = 1MB #trunk内部存储的最大文件,超过该值会被独立存储,默认16MB trunk_file_size = 64MB #trunk文件大小
trunk_create_file_advance = false #是否预先创建trunk文件
trunk_create_file_time_base = 02:00 #预先创建trunk文件的基准时间
trunk_create_file_interval = 86400 #预先创建trunk文件的时间间隔
trunk_create_file_space_threshold = 20G #trunk创建文件的最大空闲空间
trunk_init_check_occupying = false #启动时是否检查每个空闲空间列表项已经被使用
trunk_init_reload_from_binlog = false #是否纯粹从trunk-binlog重建空闲空间列表
trunk_compress_binlog_min_interval = 0 #对trunk-binlog进行压缩的时间间隔
- 注:采用合并存储后的大文件统称为Trunk文件,没有合并存储的文件统称为源文件;
-
注意区分三个概念:
1)Trunk文件:storage服务器磁盘上存储的实际文件,默认大小为64MB
2)合并存储文件的FileId:表示服务器启用合并存储后,每次上传返回给客户端的FileId,注意此时该FileId与磁盘上的文件没有一一对应关系;
3)没有合并存储的FileId:表示服务器未启用合并存储时,Upload时返回的FileID,fileid 采用 Base64 url编码。 - 1、存储文件命名与文件结构
- 向FastDFS上传文件成功时,服务器返回该文件的存取ID叫做fileid,当没有启动合并存储时该fileid和磁盘上实际存储的文件一一对应,当采用合并存储(trunk存储)时就不再一一对应而是多个fileid对应的文件被存储成一个大文件。
Trunk文件文件名格式:fdfs_storage1/data/00/00/000001 文件名从1开始递增,类型为int;
源文件文件名格式 :group2/M07/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png
- 2、没有合并存储的fileid
-
文件名(不含后缀名)采用Base64编码,包含如下5个字段(每个字段均为4字节整数)
group2/M07/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png -
文件名中,除了.png 为文件后缀,rBABtGIfljmACwDjAAC5ERGBk_A347 这部分是一个base64编码缓冲区,组成如下:
storage_id(ip的数值型)源storage server ID或IP地址
timestamp(文件创建时间戳)
file_size(若原始值为32位则前面加入一个随机值填充,最终为64位)
crc32(文件内容的检验码)
随机数 (引入随机数的目的是防止生成重名文件)
rBABtGIfljmACwDjAAC5ERGBk_A347
| 4bytes | 4bytes | 8bytes |4bytes | 2bytes |
| ip | timestamp | file_size |crc32 | 校验值 |
- 3、获取FiledID信息
- 1) 查看文件信息
Usage: fdfs_file_info <config_file> <file_id>
fdfs_file_info /etc/fdfs/client.conf group2/M07/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png
# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf 2-14.png //上传文件
group2/M07/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png//查看信息
# /usr/bin/fdfs_file_info /etc/fdfs/client.conf group2/M07/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png source storage id: 0
source ip address: 172.16.0.1
file create timestamp: 2022-03-02 16:07:21
file size: 47377
file crc32: 293704688 (0x118193F0)
- Java获取文件ID信息
FileInfo f2 = storageClient.get_file_info("group2", "M07/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png");
LOG.info(f2.toString());
//rBABtGIfljmACwDjAAC5ERGBk_A347
byte[] fileId = StorageClient.base64.decodeAuto("rBABtGIfljmACwDjAAC5ERGBk_A347".substring(27));
int trunkID = ProtoCommon.buff2int(fileId, 0);
LOG.info("trunk ID:{}", trunkID);
int offset = ProtoCommon.buff2int(fileId, 4);
LOG.info("offset:{}", offset);
int alloc_size = ProtoCommon.buff2int(fileId, 8);
LOG.info("alloc_size:{}", alloc_size);
或者
/**
* 获取文件信息
** param string group_name 文件所在的组名
* param string file_id 文件id(如: M07/00/1F/rBABtGIfljmACwDjAAC5ERGBk_A347.png)
*
* return array
*/
fastdfs_get_file_info(string group_name, string file_id)
返回结果示例:
source storage id: 0
source ip address: 172.16.89.162
file create timestamp: 2016-11-10 11:26:32
file size: 111831
file crc32: 3676413605 (0xDB219EA5)
fdfs-文件上传信息返回详情相关推荐
- 处理文件上传后返回json数据在IE出现文件下载问题(框架是spring boot)
处理文件上传后返回json数据在IE出现文件下载问题(框架是spring boot) 最近做了一个上传xml文件的功能,在谷歌浏览上传没有问题,可以返回正确的结果,但在ie浏览器上上传成功以后,一直提 ...
- Ext文件上传总是返回.do
一个纠结的问题,我做的是文件上传处理. 本来是想读取了Excel的内容返回的,结果返现总是返回一个提示下载xxxx.do文件的提示. 即使我把后台处理的方法做成void无返回的,还是会提示我去下载,特 ...
- JavaWeb 使用ajax上传文件并显示进度条等上传信息
文件上传在Web程序中是常用的功能,一般上传图片或者文件大小比较少的文件客户端不需要显示上传进度或文件上传的信息,如果是上传的文件比较大的时候,可以在客户端展示文件上传进度以及根据业务的需求显示文件上 ...
- vue+el-upload组件封装(图片,文件上传至oss阿里云)
1.安装ali-oss npm install ali-oss --save 2.oss方法封装 新建utils/ali-oss-upload.js文件(代码如下) const OSS = requi ...
- PHP 文件上传类 FileUpload 高洛峰老师 细说PHP
/**文件名为FileUpload.class.php*将与文件上传相关的成员属性和成员方法声明在一起*/class FileUpload{private $filePath; //保存上传文件将被保 ...
- ASP.NET Core文件上传IFormFile于Request.Body的羁绊
前言 在上篇文章深入探究ASP.NET Core读取Request.Body的正确方式[1]中我们探讨了很多人在日常开发中经常遇到的也是最基础的问题,那就是关于Request.Body的读取方式问题, ...
- fileupload.class.php,PHP 文件上传类 FileUpload 高洛峰老师 细说PHP
/* *文件名为FileUpload.class.php *将与文件上传相关的成员属性和成员方法声明在一起 */ class FileUpload{ private $filePath; ...
- 文件上传漏洞靶场upload-labs学习(pass1-pass5)
Upload-Labs学习 0x00 upload-labs简介 0x01 upload-labs环境搭建 0x02 Pass1(前端判断绕过) 0x03 Pass2(content-type类型绕过 ...
- 基于Mongodb的文件上传下载,图片预览
1.依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-b ...
- plupload文件上传插件使用
官方文档:http://www.phpin.net/tools/plupload/ //实例化组件 //附件1上传路径 var dirFile1 = '/upload/htfj/rchtfj/${da ...
最新文章
- hibernate 第三天
- 玩点深入的:Java 虚拟机内存结构及编码实战
- 【AI学习篇】实战深度学习(3):深度学习的数据表示
- 纯CSS美化单复选框(checkbox、radio)
- 晶科电力打造山东省最大物流港分布式光伏项目
- php 分页 url重写 分页问题,解决千古难题,wordpress分页URL问题,wordpress给分页加链接...
- tft lcd驱动参数详解_LED拼接屏和LCD拼接屏的区别
- hdu 4288 Coder (成都赛区 线段树)
- P2731 骑马修栅栏 欧拉函数
- 直播APP源码(干货):搭建直播平台的具体方案
- 开发了一个拼多多淘宝闲鱼所有虚拟店商品通过百度网盘自动发货机器人软件助手
- vim的关键词的补全功能
- python打九九乘法表上三角下三角_python经典练习题之九九乘法表、打印菱形、打印对顶三角形、斐波拉契数列、素数... - 小黑电脑...
- Python编程:实现谢尔宾斯基三角
- Java 输出单双引号问题
- Opencv4学习-2、小案例之绿布抠图-视频背景图替换
- 4k笔记本刺眼睛_2020戴尔笔记本怎么选?哪个系列好?附5款高销量戴尔笔记本电脑型号推荐!【超高性价比】...
- 解决Windows提示缺少mfc140.dll文件的问题
- 谐音法巧记计算机英语单词,经典记忆法,巧记英语单词,简单又有趣
- runtime-compiler和runtime-only