- 论坛徽章:
- 0
|
@happy_fish:
我们公司现在打算使用fastDFS来存储文件,其中有一个需求:实现文件的软删除(即不真正删除,只打上删除标记)、恢复操作(即去掉删除标记)。
第一个思路:
利用fastDFS提供的主从文件机制可以实现文件的软删除,比如:
主文件ID为: group1/M00/00/00/wKgCx1ETdo2AFlXZAACCJ5iSa_k551.jpg
通过上传从文件API:
fastdfs_storage_upload_slave_by_filename1("1.jpg","group1/M00/00/00/wKgCx1ETdo2AFlXZAACCJ5iSa_k551.jpg","--del");
其中 prefix_name = “--del”,这样就打上了删除标记,返回的从文件ID为:group1/M00/00/00/wKgCx1ETdo2AFlXZAACCJ5iSa_k551--del.jpg
但现在问题是恢复操作没法实现,因为通过fastdfs_storage_upload_slave_by_filename1()函数没法去掉文件ID中的 “--del”,这个函数只能往文件ID加标记,不能去掉标记。
第二个思路: 通过修改文件ID中的扩展名来实现软删除和恢复。
比如原文件为: group1/M00/00/00/wKgCx1ETdo2AFlXZAACCJ5iSa_k551.jpg
删除文件为: group1/M00/00/00/wKgCx1ETdo2AFlXZAACCJ5iSa_k551.del
既要保证文件名相同,同时又要修改后面的扩展名,FastAPI能够接近实现这个需求还得借用从文件的机制:
string fastdfs_storage_upload_slave_by_filebuff1(string file_buff, string master_file_id, string prefix_name,string file_ext_name)
但这个函数有一个强制性要求,就是第三个参数prefix_name不能为空,是强制需要赋值的,这样不能保证文件名不变。
结论:
happy_fish:: 能不能修改一下fastdfs_storage_upload_slave_by_filebuff1()函数的参数为:如果参数file_ext_name设置的值和文件扩展名不一样的情况下,可以让参数prefix_name取值为空,是可选的,可以不赋值。因为通过扩展名不同,也可以区分主从文件。
非常感谢你分享出来的FastDFS。
|
|