选定存储目录以后,Storage 会为文件生一个 file_id,由 Storage Server IP、文件创建时间、文件大小、文件 crc32 和一个随机数组成,然后将这个二进制串进行 base64 编码,转换为字符串。
生成文件名
当文件存储到某个子目录后,即认为该文件存储成功,接下来会为该文件生成一个文件名,文件名由 group名称/存储目录/两级子目录/file_id.后缀名 拼接而成。
FastDFS文件上传返回信息解读
group1:组名/卷名。文件上传成功以后所在的 Storage 组名称,由 Storage 服务器返回。
M00:虚拟磁盘路径。与 Storage 配置文件中磁盘选项 store_path* 对应。如果配置了 store_path0 则是 M00,如果配置了 store_path1 则是 M01,以此类推。比如:store_path0 = /fastdfs/storage/store,M00 则表示:/fastdfs/storage/store/data。
/02/44:数据两级目录。Storage 服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
wKgDrE34E8wAAAAAAAAGkEIYJK42378:file_id,由 Storage Server IP、文件创建时间、文件大小、文件 crc32 和一个随机数组成,然后将这个二进制串进行 base64 编码,转换为字符串。
group1/M00/02/44/wKgDrE34E8wAAAAAAAAGkEIYJK42378.sh:文件名。
方式一
上传命令格式为:fdfs_upload_file /etc/fdfs/client.conf 要上传的文件。
[root@localhost ~]# fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/china.jpg group1/M00/00/00/wKgKZl9skn6AHZKUAADhaCZ_RF0650.jpg文件上传成功以后,会返回该文件在 Storage 服务器中的存储位置及随机生成的文件名。其中 group1 表示 Storage 组名/卷名,M00 是一个虚拟目录,表示 /fastdfs/storage/store/data/ 真实路径中的 data 目录。
如下图所示,查看 Storage 服务器发现该文件已成功上传。
方式二
或者使用:fdfs_test /etc/fdfs/client.conf upload 要上传的文件。
[root@localhost ~]# fdfs_test /etc/fdfs/client.conf upload /usr/local/src/china.jpg This is FastDFS client test program v6.07 Copyright (C) 2008, Happy Fish / YuQing FastDFS may be copied only under the terms of the GNU General Public License V3, which may be found in the FastDFS source kit. Please visit the FastDFS Home Page for more detail. [2020-09-24 20:59:11] DEBUG - base_path=http://www.likecs.com/fastdfs/client, connect_timeout=5, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0 tracker_query_storage_store_list_without_group: server 1. group_name=, ip_addr=192.168.10.102, port=23000 group_name=group1, ip_addr=192.168.10.102, port=23000 storage_upload_by_filename group_name=group1, remote_filename=M00/00/00/wKgKZl9smB-AVBRKAADhaCZ_RF0518.jpg source ip address: 192.168.10.102 file timestamp=2020-09-24 20:59:11 file size=57704 file crc32=645874781 example file url: storage_upload_slave_by_filename group_name=group1, remote_filename=M00/00/00/wKgKZl9smB-AVBRKAADhaCZ_RF0518_big.jpg source ip address: 192.168.10.102 file timestamp=2020-09-24 20:59:11 file size=57704 file crc32=645874781 example file url:通过 fdfs_test 的方式上传文件,会返回该文件上传成功以后详细的相关信息。
group_name:Storage 组名/卷名
remote_filename:上传成功文件的存储路径及文件名
source_ip address:上传成功文件所在的 Storage 服务器的 IP 地址
file timestamp:上传成功文件时的时间戳
file size:上传成功文件的文件大小
example file url:上传成功文件的 url 地址,配合 Nginx 可以直接访问
storage_upload_slave_by_filename:FastDFS 的文件主/从特性,由主文件产生从文件
如下图所示,查看 Storage 服务器发现该文件已成功上传。后缀为 jpg-m 的文件存放了上传成功文件的元数据信息。
查看元数据信息如下:
[root@localhost ~]# more /fastdfs/storage/store/data/00/00/wKgKZl9smB-AVBRKAADhaCZ_RF0518.jpg-m ext_namejpgfile_size115120height80width160下载