Exemple #1
0
 public function update_contact_avatar($small_data, $middle_data, $original_data, $pic_data)
 {
     $user_id = $this->uid;
     //获取通讯录相册
     $album_id = $this->db->getOne("wp_album", "album_id", "user_id = {$user_id} AND album_flag = '3'");
     if (!$album_id) {
         $data = array("album_name" => '通讯录相册', "user_id" => $user_id, "create_dt" => time(), "update_dt" => time(), "album_flag" => 3);
         $album_id = $this->db->insertData("wp_album", $data);
     }
     $file_md5 = md5($original_data);
     if (!$this->TT) {
         $this->TT = new TTServer();
     }
     $data = $this->TT->get($file_md5);
     //上传到FS
     include 'application/include/FastDFS.php';
     $this->fs = FastDFS::factory('group1');
     if ($data) {
         //生成新的格式的FS
         $fsfile_name_array = explode('.', $data['pic_fs_path']);
         $thumb_small_path = $fsfile_name_array[0] . '_48.' . $fsfile_name_array[1];
         $thumb_middle_path = $fsfile_name_array[0] . '_120.' . $fsfile_name_array[1];
         //已存在
         $dataExif = unserialize($data['exif']);
         $pic_data_array['pic_width'] = $dataExif['拍摄分辨率宽'] ? $dataExif['拍摄分辨率宽'] : $data['width'];
         $pic_data_array['pic_height'] = $dataExif['拍摄分辨率高'] ? $dataExif['拍摄分辨率高'] : $data['height'];
         $pic_data_array['degree'] = $dataExif['方向'];
         //上传size=small的图片
         $meta = array('remote_filename' => $thumb_small_path);
         $fs_small = $this->fs->upByBuff($small_data, 'jpg', $meta);
         //上传size=middle的图片
         $meta = array('remote_filename' => $thumb_middle_path);
         $fs_middle = $this->fs->upByBuff($middle_data, 'jpg', $meta);
         //插入 数据大wp图片表
         $pic_data_array['album_id'] = $album_id;
         $pic_data_array['user_id'] = $user_id;
         $pic_data_array['create_time'] = time();
         $pic_data_array['update_time'] = time();
         $pic_data_array['upload_ip'] = $_SERVER['REMOTE_ADDR'];
         $pic_data_array['upload_file_name'] = $pic_data['upload_file_name'];
         $pic_data_array['file_md5'] = $file_md5;
         $pic_data_array['file_size'] = strlen($original_data);
         $pic_id = $this->db->insertData("wp_pic", $pic_data_array);
         if ($pic_id) {
             return array("data" => array("0" => Kohana::config('album.recordThumb') . 'imgs/' . $pic_id . '.jpg', "1" => Kohana::config('album.recordThumb') . 'imgs/' . $pic_id . '_120.jpg'));
         } else {
             return null;
         }
     } else {
         //写入用户临时图片文件
         //写入文件
         if (!is_dir(ALBUM_IMAGE . $user_id)) {
             mkdir(ALBUM_IMAGE . $user_id, 0777);
         }
         $tmpfname = ALBUM_IMAGE . $user_id . '/' . $user_id . '_' . $file_md5 . '.jpg';
         $handle = fopen($tmpfname, "w");
         fseek($handle, 0);
         //移动指针到文件开始位置
         fwrite($handle, $original_data);
         fclose($handle);
         //上传到DFS、获得文件映射名
         //fs图片文件映射
         $img_fs_name = $this->fs->upByFileName($tmpfname);
         if ($img_fs_name) {
             $fsfile_type_array = explode('.', $img_fs_name);
             $fsfile_name = $fsfile_type_array[0];
             $thumb_small_path = $fsfile_type_array[0] . '_48.' . $fsfile_type_array[1];
             $thumb_middle_path = $fsfile_type_array[0] . '_120.' . $fsfile_type_array[1];
             //上传size=small的图片
             $meta = array('remote_filename' => $thumb_small_path);
             $fs_small = $this->fs->upByBuff($small_data, 'jpg', $meta);
             //上传size=middle的图片
             $meta = array('remote_filename' => $thumb_middle_path);
             $fs_middle = $this->fs->upByBuff($middle_data, 'jpg', $meta);
         }
         //获取图片exif信息
         $exif = Exif::get_exif_info($tmpfname);
         $img_exif = $exif['exif_info'];
         $degree = $exif['degree'] ? intval($exif['degree']) : 0;
         $imgsWH = Image::getImagesWidthHight($tmpfname);
         $images_width = $imgsWH['width'];
         $images_height = $imgsWH['height'];
         //缩略图队列写入内存表
         $thumb_array = array();
         $thumb_array['file_path'] = $tmpfname;
         $thumb_array['fs_path'] = $fsfile_name;
         /*
         $thumbs = $this->create_thumb_by_width_height($images_width, $images_height, true, true);
         foreach ( $thumbs as $key => $value ) {
             if($key == 0) {
                 $thumb_type_array.= $value['type'];
             } else {
                 $thumb_type_array.= ','.$value['type'];
             }
         }
         
         $thumb_array['thumb_type'] = $thumb_type_array ;
         $thumb_array['images_width'] = $images_width;
         $thumb_array['images_height'] = $images_height;
         $thumb_array['create_time'] = time();                
         $this->add_to_thumb_queue($thumb_array);
         */
         //添加数据到TTServer
         $value = array("pic_fs_path" => $img_fs_name, "exif" => serialize($img_exif));
         $this->TT->set($file_md5, $value);
         //写表
         $pic_data_array = array();
         $pic_data_array['pic_width'] = $images_width;
         $pic_data_array['pic_height'] = $images_height;
         $pic_data_array['degree'] = $degree;
         $pic_data_array['album_id'] = $album_id;
         $pic_data_array['user_id'] = $user_id;
         $pic_data_array['create_time'] = time();
         $pic_data_array['update_time'] = time();
         $pic_data_array['upload_ip'] = $_SERVER['REMOTE_ADDR'];
         $pic_data_array['upload_file_name'] = $pic_data['upload_file_name'];
         $pic_data_array['file_md5'] = $file_md5;
         $pic_data_array['file_size'] = strlen($original_data);
         $pic_id = $this->db->insertData("wp_pic", $pic_data_array);
         if ($pic_id) {
             return array("data" => array("0" => Kohana::config('album.recordThumb') . 'imgs/' . $pic_id . '.jpg', "1" => Kohana::config('album.recordThumb') . 'imgs/' . $pic_id . '_120.jpg'));
         } else {
             return null;
         }
     }
 }
Exemple #2
0
 public function uploadFileEnd($temp_id, $flag)
 {
     $uid = $this->uid;
     $data = $this->db->getRow("album_upload_temp", "file_title, file_md5, file_size, file_offset, file_path, file_type", "temp_id={$temp_id} AND user_id={$uid}");
     if (!$data) {
         return array("code" => 403, "msg" => "uploadID不存在或无权限");
     }
     //if($data['file_size'] != $data['file_offset']) {
     //	return array("code" => 403, "msg" => "文件大小不匹配.");
     //}
     //$tempfsize = 0;
     //if( file_exists(ALBUM_TEMP.$data['file_path']) ) {
     //	$tempfsize = filesize(ALBUM_TEMP.$data['file_path']);
     //}
     //if(!$tempfsize || $tempfsize != $data['file_size']) {
     //	return array("code" => 403, "msg" => "文件大小不匹配!");
     //}
     //移动临时文件到文件目录
     if (!is_dir(ALBUM_IMAGE . $uid)) {
         mkdir(ALBUM_IMAGE . $uid, 0777);
     }
     //临时文件移动到user文件夹下
     $tempfname = substr($data['file_path'], 0, -4);
     rename(ALBUM_TEMP . $data['file_path'], ALBUM_IMAGE . $tempfname);
     //移动文件成功
     if (file_exists(ALBUM_IMAGE . $tempfname)) {
         $file_url = ALBUM_IMAGE . $tempfname;
         //获取图片的EXIF信息
         $exif = Exif::get_exif_info($file_url);
         $img_exif = $exif['exif_info'];
         $degree = $exif['degree'];
         //获取图片的高度、宽度
         $img = getimagesize($file_url);
         $width = $img[0];
         $height = $img[1];
         $file_format = $img[2];
         if (!$img || !$width || !$height || $file_format > 6) {
             return false;
         }
         if ($file_format == 2 && $degree) {
             //旋转图片
             $rotateDeg = $degree * 90;
             Image::rotate_by_degree($file_url, $rotateDeg);
             if ($degree == 1 || $degree == 3) {
                 $t = $width;
                 $width = $height;
                 $height = $t;
             }
             $img_exif['degree'] = 0;
             $degree = 0;
         }
         $flag = $flag ? $flag : 2;
         //广播标识
         $album_id = $this->db->getOne("wp_album", "album_id", "user_id = {$uid} AND album_flag={$flag}");
         if (!$album_id) {
             //创建广播相册
             $album_data = array('album_name' => '广播相册', 'user_id' => $uid, 'create_dt' => time(), 'update_dt' => time(), 'album_flag' => $flag);
             $album_id = $this->db->insertData("wp_album", $album_data);
         }
         $pic_info = array('album_id' => $album_id, 'user_id' => $uid, 'create_time' => time(), 'update_time' => time(), 'upload_ip' => $_SERVER['REMOTE_ADDR'], 'file_md5' => $data['file_md5'], 'file_size' => $data['file_size'], 'file_type' => $data['file_type'], 'pic_width' => $width, 'pic_height' => $height, 'degree' => intval($degree), 'appid' => 1);
         //上传到FS
         include 'application/include/FastDFS.php';
         $this->fs = FastDFS::factory('group1');
         //FS存储地址
         $img_fs_name = $this->fs->upByFileName($file_url);
         //写TTServer
         $value = array("pic_fs_path" => $img_fs_name, "exif" => serialize($img_exif), "width" => $width, "height" => $height);
         $this->TT = new TTServer();
         $this->TT->set($data['file_md5'], $value);
         $pic_id = $this->db->insertData("wp_pic", $pic_info);
         $this->db->query("UPDATE wp_album SET pic_num = pic_num+1 WHERE album_id={$album_id}");
         //删除临时表数据
         $this->db->DeleteData("album_upload_temp", array("temp_id" => $temp_id));
         //生成160
         $images = Image::createThumb_by_type($file_url, 160);
         $thumb_fs_name = substr($img_fs_name, 0, -4);
         $meta = array('remote_filename' => $thumb_fs_name . '_160.jpg');
         $this->fs->upByFileName($images, $meta);
         if (file_exists($images)) {
             unlink($images);
         }
         return array("pid" => $pic_id, "url" => Kohana::config('album.recordThumb') . 'imgs/' . $pic_id . '_160.jpg', "uploaded" => true);
     } else {
         //移动文件失败
         return null;
     }
 }