Пример #1
0
 /**
  * 用flash添加照片
  */
 function add_photo()
 {
     if ($_FILES) {
         global $php;
         $php->upload->thumb_width = 136;
         $php->upload->thumb_height = 136;
         $php->upload->max_width = 500;
         $php->upload->max_height = 500;
         $php->upload->thumb_qulitity = 100;
         if (class_exists('SaeStorage', false)) {
             $s = new SaeStorage();
             $file_id = uniqid('pic_', false) . mt_rand(1, 100);
             $tmp_file = SAE_TMP_PATH . '/thum_' . $file_id . '.jpg';
             Image::thumbnail($_FILES['Filedata']['tmp_name'], $tmp_file, $php->upload->thumb_width, $php->upload->thumb_height, $php->upload->thumb_qulitity, false);
             $pic = '/uploads/' . $file_id . ".jpg";
             $ret = $s->upload('static', $pic, $_FILES['Filedata']['tmp_name']);
             if ($ret) {
                 $data['picture'] = $s->getUrl('static', $pic);
             } else {
                 echo $s->errmsg() . ' : ' . $s->errno();
                 return;
             }
             $thum_pic = '/uploads/thum_' . $file_id . '.jpg';
             $ret = $s->upload('static', $thum_pic, $tmp_file);
             if ($ret) {
                 $data['imagep'] = $s->getUrl('static', $thum_pic);
             } else {
                 echo $s->errmsg() . ' : ' . $s->errno();
                 return;
             }
         } else {
             $php->upload->sub_dir = 'user_images';
             $up_pic = Swoole::$php->upload->save('Filedata');
             if (empty($up_pic)) {
                 return '上传失败,请重新上传! Error:' . $php->upload->error_msg;
             }
             $data['picture'] = $up_pic['name'];
             $data['imagep'] = $up_pic['thumb'];
         }
         $data['uid'] = $_POST['uid'];
         $up_pic['photo_id'] = $this->swoole->model->UserPhoto->put($data);
         /* if(isset($_POST['post']))
            {
            	Api::feed('photo', $data['uid'], 0, $up_pic['photo_id']);
            } */
         return json_encode($up_pic);
     } else {
         $this->swoole->tpl->display('myphoto_add_photo.html');
     }
 }
Пример #2
0
 /**
  * 保存指定文件
  * @param  array   $file    保存的文件信息
  * @param  boolean $replace 同名文件是否覆盖
  * @return boolean          保存状态,true-成功,false-失败
  */
 public function save($file, $replace = true)
 {
     $filename = ltrim($this->rootPath . '/' . $file['savepath'] . $file['savename'], '/');
     $st = new \SaeStorage();
     /* 不覆盖同名文件 */
     if (!$replace && $st->fileExists($this->domain, $filename)) {
         $this->error = '存在同名文件' . $file['savename'];
         return false;
     }
     /* 移动文件 */
     if (!$st->upload($this->domain, $filename, $file['tmp_name'])) {
         $this->error = '文件上传保存错误![' . $st->errno() . ']:' . $st->errmsg();
         return false;
     }
     return true;
 }
Пример #3
0
function handleFiles($typeId, $tmpNames, $names)
{
    global $IS_SAE;
    $result = array("success" => true, "details" => array());
    $ext_arr = array();
    for ($i = 0; $i < count($names); $i++) {
        $tmp = explode(".", $names[$i]);
        $tmp = $tmp[count($tmp) - 1];
        array_push($ext_arr, $tmp);
    }
    // when name the folder, here we wipe the parameter $type.
    $directory = "../resources/chart/{$typeId}/";
    if ($IS_SAE) {
        $st = new SaeStorage();
        $attr = array('encoding' => 'gzip');
        for ($i = 0; $i < count($names); $i++) {
            $tName = $tmpNames[$i];
            $oName = $names[$i];
            $file_new_name = date("YmdHis") . str_pad(rand(0, 9999), 4, rand(0, 9), STR_PAD_LEFT) . "." . $ext_arr[$i];
            $uploadRes = $st->upload($_SERVER['HTTP_APPNAME'], $file_new_name, $_FILES['photo']['tmp_name'][$i], $attr, true);
            if ($uploadRes === false) {
                array_push($result["details"], array("success" => false, "msg" => "图片'{$oName}'上传失败!error:" . $st->errno() . ' ' . $st->errmsg(), "file" => '', "original_file_name" => $oName));
            } else {
                array_push($result["details"], array("success" => true, "msg" => "图片'{$oName}'上传成功!重命名为'{$file_new_name}'。", "file" => $uploadRes, "original_file_name" => $oName));
            }
        }
    } else {
        if (!file_exists($directory)) {
            if (!mkdir($directory)) {
                throw new Exception("文件夹创建失败!" . $directory);
            }
        }
        for ($i = 0; $i < count($names); $i++) {
            $tName = $tmpNames[$i];
            $oName = $names[$i];
            $file_new_name = date("YmdHis") . str_pad(rand(0, 9999), 4, rand(0, 9), STR_PAD_LEFT) . "." . $ext_arr[$i];
            if (move_uploaded_file($tName, $directory . $file_new_name)) {
                array_push($result["details"], array("success" => true, "msg" => "图片'{$oName}'上传成功!重命名为'{$file_new_name}'。", "file" => $directory . $file_new_name, "original_file_name" => $oName));
            } else {
                array_push($result["details"], array("success" => false, "msg" => "图片'{$oName}'上传失败!", "file" => '', "original_file_name" => $oName));
            }
        }
    }
    return $result;
}
Пример #4
0
  }
  /**
 * 保存指定文件
 * @param  array   $file    保存的文件信息
 * @param  boolean $replace 同名文件是否覆盖
 * @return boolean          保存状态,true-成功,false-失败
 */
  public function save(&$file, $replace = true)
  {
      $filename = ltrim($this->rootPath . '/' . $file['save_path'] . $file['save_name'], '/');
      $st = new \SaeStorage();
      /* 不覆盖同名文件 */
      if (!$replace && $st->fileExists($this->domain, $filename)) {
          $this->error = '存在同名文件' . $file['savename'];
          return false;
      }
      /* 移动文件 */
      if (!$st->upload($this->domain, $filename, $file['tmp_name'])) {
          $this->error = '文件上传保存错误![' . $st->errno() . ']:' . $st->errmsg();
Пример #5
0
 static function upload_topic($pic_name, $change = 0, $oldpic = null)
 {
     define('DOMAIN', 'upload');
     //要上传的storage名称定义
     $temp = 'temp';
     $s = new SaeStorage();
     $poc = array('_big.jpg', '_midde.jpg', '_small.jpg', '.jpg');
     foreach ($poc as $p) {
         $pic = $pic_name . $p;
         $img = $s->read($temp, $pic);
         if ($s->write(DOMAIN, $pic, $img) == false) {
             echo "图片写入失败!请重新上传,如果还是失败请联系客服!但是不要放弃对咱们原创的希望";
             var_dump($s->errno(), $s->errmsg());
         }
         unset($pic);
         unset($pics);
         unset($img);
     }
     self::delete_topic($pic_name);
     if ($change == 1) {
         self::delete_topic($oldpic, 'jpg', 'upload');
     }
     unset($s);
     return 1;
 }
Пример #6
0
<?php

// 参考: http://apidoc.sinaapp.com/class-SaeStorage.html
// 顺便吐槽下,居然没有 createDomain() 的接口,需要开发者手工创建一个 upload 的 domain
// 虽然 SAE 很有争议,但是还是有很多开发者想玩一玩,XN3 只需要一个文件配置文件就搞定。正式运营环境建议使用 VPS 或者独立服务器。
if (IN_SAE) {
    $saestorage = new SaeStorage();
    //$saestorage->setDomainAttr('domain', array('private'=>'false'));
    $n = $saestorage->getDomainCapacity('upload');
    //if($n == NULL || $saestorage->errno() == -7) exit('SaeStorage upload 磁盘配额不足!');
    if ($n == NULL || $saestorage->errno()) {
        exit($saestorage->errmsg());
    }
    $conf['db'] = array('type' => 'mysql', 'mysql' => array('master' => array('host' => SAE_MYSQL_HOST_M . (SAE_MYSQL_PORT == 3306 ? '' : ':' . SAE_MYSQL_PORT), 'user' => SAE_MYSQL_USER, 'password' => SAE_MYSQL_PASS, 'name' => SAE_MYSQL_DB, 'charset' => 'utf8', 'engine' => 'MyISAM'), 'slaves' => array()));
    $conf['upload_url'] = $saestorage->geturl('upload', '') . '/';
    $conf['upload_path'] = 'saestor://upload/';
    $conf['tmp_path'] = SAE_TMP_PATH;
}
// 函数如果放在 if 里面不利于 opcode 缓存。
/*function sae_move_upload_file($srcfile, $destfile) {
	global $saestorage;
	return $saestorage->upload('upload', $srcfile, $destfile);
}*/
Пример #7
0
function SaeStorageErrorNumber()
{
    //无错误则为0
    $storage = new SaeStorage();
    $result = $storage->errno();
    return $result;
}
 // 图片消息
 if ($form_MsgType == "image") {
     // 获取发送图片的URL
     $form_PicUrl = $postObj->PicUrl;
     // 创建新图片的名称
     $filename = $fromUsername . date("YmdHis") . ".jpg";
     // 建立抓取图片类
     $f = new SaeFetchurl();
     // 抓取图片
     $res = $f->fetch($form_PicUrl);
     // 如果抓取到图片
     if ($f->errno() == 0) {
         // 新建存储类
         $s = new SaeStorage();
         $s->write("kingson4wu", $filename, $res);
         if ($s->errno() == 0) {
             $msgType = "text";
             $resultStr = sprintf($textTpl, $fromUsername, $toUsername, time(), $msgType, "Upload Success!");
             echo $resultStr;
         } else {
             $msgType = "text";
             $resultStr = sprintf($textTpl, $fromUsername, $toUsername, time(), $msgType, "Save failed!");
             echo $resultStr;
         }
     } else {
         $msgType = "text";
         $resultStr = sprintf($textTpl, $fromUsername, $toUsername, time(), $msgType, "Upload failed!");
         echo $resultStr;
     }
     exit;
 }
Пример #9
0
 /**
  * Write a query to a cache file
  *
  * @access	public
  * @return	bool
  */
 function write($sql, $object)
 {
     if (!$this->check_path()) {
         return $this->db->cache_off();
     }
     $segment_one = $this->CI->uri->segment(1) == FALSE ? 'default' : $this->CI->uri->segment(1);
     $segment_two = $this->CI->uri->segment(2) == FALSE ? 'index' : $this->CI->uri->segment(2);
     //---chang---//
     /*
     		$dir_path = $this->db->cachedir.$segment_one.'+'.$segment_two.'/';
     
     		$filename = md5($sql);
     
     		if ( ! @is_dir($dir_path))
     		{
     			if ( ! @mkdir($dir_path, DIR_WRITE_MODE))
     			{
     				return FALSE;
     			}
     
     			@chmod($dir_path, DIR_WRITE_MODE);
     		}
     
     		if (write_file($dir_path.$filename, serialize($object)) === FALSE)
     		{
     			return FALSE;
     		}
     
     		@chmod($dir_path.$filename, FILE_WRITE_MODE);
     */
     $file_name = $segment_one . '-' . $segment_two . '-' . md5($sql);
     if ($this->db->cache_method == "storage") {
         $storage = new SaeStorage();
         $storage->write($this->db->cachedir, $file_name, serialize($object));
         if ($storage->errno() != 0) {
             return FALSE;
         }
     } else {
         $mmc = memcache_init();
         if ($mmc) {
             $catalog_data = memcache_get($mmc, $this->db->cachedir);
             $catalog;
             if ($catalog_data == false) {
                 $catalog = array();
             } else {
                 $catalog = unserialize($catalog_data);
             }
             if (!array_key_exists($file_name, $catalog)) {
                 $catalog[$file_name] = "";
                 memcache_set($mmc, $this->db->cachedir, serialize($catalog));
             }
             memcache_set($mmc, $file_name, serialize($object));
         } else {
             return false;
         }
     }
     return TRUE;
 }