- 论坛徽章:
- 0
|
FDFD class for php
- <?php
- /*
- copyright by vyouzhi
- 2011 12 08
- vyouzhi#163#com
- QQ: 84437129
- */
- class FDFS{
- function FDFS(){
- $this->tracker = fastdfs_tracker_get_connection();
- $this->server = fastdfs_connect_server($this->tracker['ip_addr'], $this->tracker['port']);
- $this->storage = fastdfs_tracker_query_storage_store();
- $this->server = fastdfs_connect_server($this->storage['ip_addr'], $this->storage['port']);
- if (!$this->server){
- error_log("errno1: " . fastdfs_get_last_error_no() . ", error info: " . fastdfs_get_last_error_info());
- exit(1);
- }
- $this->storage['sock'] = $this->server['sock'];
- }
-
-
- function fdfs_upload($input_name){
- $file_tmp = $_FILES[$input_name]['tmp_name'];
- $real_name = $_FILES[$input_name]['name'];
- $file_name = dirname($file_tmp)."/".$real_name;
- //@copy($file_tmp, $file_name);
- @rename($file_tmp, $file_name);
- $file_info = fastdfs_storage_upload_by_filename($file_name, null, array(), null, $this->tracker, $this->storage);
-
- if($file_info){
- $group_name = $file_info['group_name'];
- $remote_filename = $file_info['filename'];
- $i = fastdfs_get_file_info($group_name, $remote_filename);
- $storage_ip = $i['source_ip_addr'];
- //var_dump($file_info);
- return array($remote_filename, $group_name, $storage_ip, $real_name);
- }
- return false;
- }
- function fdfs_down($group_name, $file_id){
- $file_content = fastdfs_storage_download_file_to_buff($group_name, $file_id);
- return $file_content;
- }
- function fdfs_del($group_name, $file_id){
- fastdfs_storage_delete_file($group_name, $file_id);
- }
- }
- ?>
复制代码 mysql 的记录表
- CREATE TABLE `fdfs` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
- `file_id` char(100) NOT NULL DEFAULT '' COMMENT '文件ID',
- `group_id` varchar(10) NOT NULL DEFAULT '' COMMENT '组名',
- `real_name` varchar(100) NOT NULL COMMENT '真名',
- `storage_ip` varchar(15) NOT NULL COMMENT 'ip',
- PRIMARY KEY (`id`),
- KEY `i_file_id` (`file_id`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8
复制代码 使用样例
- <?php
- require_once("./bootstrap.php");
- require_once("./fdfs.php");
- if(!empty($_FILES['upload1'])){
- $fdfs_obj = new FDFS();
- $res = $fdfs_obj->fdfs_upload("upload1");
- $format = "INSERT INTO `%s`.`fdfs` (`file_id`, `group_id`, `storage_ip`, `real_name`) VALUES ('%s', '%s', '%s', '%s')";
- $sql = sprintf($format, "test", $res[0], $res[1], $res[2], $res[3]);
- MySQL::Insert($sql, GetPB("w"));
- }else{
- $format = "SELECT * FROM `%s`.`fdfs` where id=4";
- $sql = sprintf($format, "test");
- $res = MySQL::FetchArray($sql, GetPB());
- if(is_array($res)){
- $fdfs_obj = new FDFS();
- /*
- $fdfs_obj->fdfs_del($res[0]['group_id'], $res[0]['file_id']);
- die();
- */
- $f = $fdfs_obj->fdfs_down($res[0]['group_id'], $res[0]['file_id']);
- file_put_contents("/tmp/".$res[0]['real_name'], $f);
- header('Content-Description: File Transfer');
- header('Content-Type: application/octet-stream');
- header('Content-Disposition: attachment; filename='.$res[0]['real_name']);
- header('Content-Transfer-Encoding: binary');
- header('Expires: 0');
- header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
- header('Pragma: public');
- header('Content-Length: ' . filesize("/tmp/".$res[0]['real_name']));
- ob_clean();
- flush();
- readfile("/tmp/".$res[0]['real_name']);
- }
- }
- ?>
- <html>
- <body>
- <form action="./fdfs_class.php" method="post" enctype="multipart/form-data">
- <input type="text" name="myText" /><br />
- <input type="file" name="upload1" /><br />
- <input type="submit" />
- </form>
- </body>
- </html>
复制代码 |
|