- 论坛徽章:
- 0
|
本帖最后由 yanjing5462 于 2012-09-17 10:59 编辑
问题:
1. 我用fastdfs_storage_upload_by_filename,先上传了一张图片,得到了filename=M00/00/00/wKgh8VBWiJuTMwLIALjDi6M68J4311.jpg和我预想的一样。
2. 之后我根据这个filename,调用fastdfs_storage_upload_slave_by_filename,得到了filename=M00/00/00/wKgh8VBWiJuTMwLIALjDi6M68J4311_200X200.JPG也和我预想的一样,到这里似乎非常完美。
3. 这时我登录storageServer查看,却发现M00/00/00/wKgh8VBWiJuTMwLIALjDi6M68J4311_200X200.JPG只是个快捷方式,链接到另外一个叫wKgh8VBWiJuB_OLnADAA3uL0470149.JPG的图片,这个图片其实就是我上传的那个缩略图。到这里,问题来了:我上传缩略图时,并没有返回wKgh8VBWiJuB_OLnADAA3uL0470149.JPG这个图片的任何信息,以后我怎么删除这个图片呢?
4. 本来想的挺好,storageServer上只产生2个文件,一个原图,一个缩略图,现在多了个快捷方式,之后查资料才弄明白,FastDFS不支持自定义filename,应该就是这个原因,才必须采用文件链接的方式。
功能展望:
FastDFS目前来看是个通用的文件存储服务,而我是用他做图片服务器,既然做图片服务器更需专业,那么有几点需要满足:
1. 原图和缩略图现在混在一起,最好能完全分开,开始打算用不同group来区分,了解group机制后发现,不行。
2. 最好取消文件链接的方式,比如使用fastdfs_storage_upload_slave_by_filename上传时,检查原图的filename是否存在,存在,就直接生成一个filename+extname的文件,不存在,就报主文件不存在的错误。这样既节省了磁盘索引,也免去客户端记录文件对应关系,只记录原图filename和group就可以了
图片上传代码:- <?php
- $tracker = fastdfs_tracker_get_connection();
- if(!fastdfs_active_test($tracker))
- {
- error_log("errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info());
- exit(1);
- }
- $storage = fastdfs_tracker_query_storage_store();
- if(!$storage)
- {
- error_log("errno: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info());
- exit(1);
- }
- $original_file1 = "/data/tools/85542.jpg";
- $original_file2 = "/data/tools/IMG_0111.JPG";
- $original_uploaded_info = fastdfs_storage_upload_by_filename($original_file1, null, array(), null, $tracker, $storage);
- print_r($original_uploaded_info);
- if($original_uploaded_info)
- {
- $group_name = $original_uploaded_info['group_name'];
- $remote_filename = $original_uploaded_info['filename'];
- $thumbnail_info = fastdfs_storage_upload_slave_by_filename($original_file2, $group_name, $remote_filename, '_200X200');
- print_r($thumbnail_info);
- }
- ?>
复制代码 请求结果:- Array
- (
- [group_name] => group1
- [filename] => M00/00/00/wKgh8VBWiJuTMwLIALjDi6M68J4311.jpg
- )
- Array
- (
- [group_name] => group1
- [filename] => M00/00/00/wKgh8VBWiJuTMwLIALjDi6M68J4311_200X200.JPG
- )
复制代码 storage Server上的文件:
|
|