Пример #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
 static function upradio($radio)
 {
     $s = new SaeStorage();
     $mname = $_FILES[$radio]['name'];
     $msize = $_FILES[$radio]['size'];
     if ($mname != "") {
         if ($msize > 10240000) {
             echo '图片大小不能超过10M';
             exit;
         }
         $type = strstr($mname, '.');
         if ($type != ".mp3") {
             echo '对不起!只支持mp3格式,如果是这几种格式请去掉处文件标识符以外的点"."';
             exit;
         }
         if (!$_FILES[$radio]['name']) {
             die('没有选择文件!');
         }
         //上传文件校验,可以添加文件类型等检验、此处简略处理
         $file_name = "m_" . time() . rand(100, 999);
         //定义保存的文件名称
         $m_path = $file_name . $type;
         //要保存的文件路径+文件名,此处保存在根目录下
         $link = $s->upload('upcon', $m_path, $_FILES[$radio]['tmp_name']);
         if ($link) {
             $out_radio = array('m_name' => $file_name, 'm_url' => $link);
             echo json_encode($out_radio);
         } else {
             $emsg = $s->errmsg();
             $this->writelog_debug($emsg);
             die('上传零时文件失败!');
         }
     }
 }
Пример #3
0
 function submit()
 {
     //var_dump($_FILES);exit;
     if (!$this->has_privilege()) {
         $this->json->output(array('success' => false, 'm' => '您没有使用该功能的权限'));
     }
     $proj_id = $this->input->post('proj_id');
     if (!$this->utility->chk_id($proj_id)) {
         $this->json->output(array('success' => false, 'm' => '输入的记录编号错误'));
     }
     $max_size = 10;
     // filesize MB
     if ($_FILES['file']['size'] > $max_size * 1024 * 1024) {
         $this->json->output(array('success' => false, 'm' => '上传文件大小不能超过' . $max_size . 'MB'));
     }
     if (!empty($_FILES)) {
         $s = new SaeStorage(SAE_ACCESSKEY, SAE_SECRETKEY);
         $url = $s->upload('upload', $_FILES['file']['name'], $_FILES['file']['tmp_name']);
         if (!$url) {
             $this->json->output(array('success' => false, 'm' => $s->errmsg()));
         }
         // insert into upload table
         $id = $this->Proj_model->create_upload($proj_id, $_FILES['file']['name'], $_FILES['file']['size']);
         // extjs json decode bug, using echo instead of output
         // $this->json->output(array('success' => true, 'url' => $url));
         echo '{"success":true, "file":"' . $_FILES['file']['name'] . '"}';
         exit;
     }
 }
Пример #4
0
function upload_mp3($filePath, $fileName)
{
    $stor = new SaeStorage();
    $stor->upload(SAE_DOMAIN, $fileName, $filePath);
    $errmsg = $stor->errmsg();
    //var_export($errmsg);
    if ($errmsg == 0) {
        $result['success'] = 1;
        $result['url'] = $stor->getUrl(SAE_DOMAIN, $fileName);
    } else {
        $result['success'] = -1;
    }
    return $result;
}
Пример #5
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;
 }
Пример #6
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;
}
Пример #7
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();
Пример #8
0
 function submit()
 {
     //var_dump($_FILES);exit;
     if (!$this->has_privilege()) {
         $this->json->output(array('success' => false, 'm' => '您没有使用该功能的权限'));
     }
     $remark = $this->input->post('remark');
     $dir_path = $this->input->post('dir_path');
     //if(!$this->utility->chk_id($proj_id)) {
     //	$this->json->output(array('success' => false, 'm' => '输入的记录编号错误'));
     //}
     $max_size = 20;
     // filesize MB
     if ($_FILES['file']['size'] > $max_size * 1024 * 1024) {
         $this->json->output(array('success' => false, 'm' => '上传文件大小不能超过' . $max_size . 'MB'));
     }
     $store_filename = $this->encrypt->sha1($_FILES['file']['name'] . date('Y-m-d H:i:s'));
     if (!empty($_FILES)) {
         $s = new SaeStorage(SAE_ACCESSKEY, SAE_SECRETKEY);
         $url = $s->upload('library', $store_filename, $_FILES['file']['tmp_name']);
         if (!$url) {
             $this->json->output(array('success' => false, 'm' => $s->errmsg()));
         }
         // insert into upload table
         $file_list = $this->Library_model->get_upload_by_name($_FILES['file']['name'], $dir_path, 'normal');
         $version = 1;
         if (count($file_list) > 1) {
             echo '{"success":false}';
             exit;
         } else {
             if (count($file_list) == 1) {
                 $version = $file_list[0]->version;
             }
         }
         $id = $this->Library_model->create_upload($remark, $_FILES['file']['name'], $_FILES['file']['size'], $dir_path, '', $store_filename, $version);
         // extjs json decode bug, using echo instead of output
         // $this->json->output(array('success' => true, 'url' => $url));
         echo '{"success":true, "file":"' . $_FILES['file']['name'] . '"}';
         exit;
     }
 }
Пример #9
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;
 }
Пример #10
0
    //在非云端运行,执行保存文件操作
    if (!isset($_SERVER['HTTP_APPNAME'])) {
        //移动文件
        $file_path = $save_path . $new_file_name;
        if (move_uploaded_file($tmp_name, $file_path) === false) {
            alert("上传文件失败。");
        }
        @chmod($file_path, 0644);
        $file_url = $save_url . $new_file_name;
    } else {
        //在云端运行,运用 SaeStorage 进行文件保存
        $sae_file = new SaeStorage();
        $sae_url = $sae_file->upload('yikeup', $new_file_name, $tmp_name);
        if (!$sae_url) {
            //出现错误
            alert(SaeStorage::errmsg());
        }
        $file_url = $sae_url;
    }
    //header('Content-type: text/html; charset=UTF-8');
    $json = new Services_JSON();
    echo $json->encode(array('error' => 0, 'url' => $file_url));
    exit;
}
function alert($msg)
{
    //header('Content-type: text/html; charset=UTF-8');
    $json = new Services_JSON();
    echo $json->encode(array('error' => 1, 'message' => $msg));
    exit;
}
Пример #11
0
 /**
  * 上传头像
  */
 function upload($_FILES)
 {
     $username = $_GET['username'];
     $files = $_FILES['file'];
     $filename = $files['name'];
     //获取图片名字
     $fileResource = $files['tmp_name'];
     $storage = new SaeStorage();
     $domain = "userinfo";
     if ($storage->fileExists($domain, $filename)) {
         $storage->delete($domain, $filename);
     }
     if ($storage->upload($domain, $filename, $fileResource)) {
         $imgUrl = $storage->getCDNUrl($domain, $filename);
         //获取图片地址
         //执行修改语句,将图片URl地址及图片名字写入数据库
         $update = "update `user` set `imgName`='{$filename}', `imgUrl`='{$imgUrl}' where `username`='{$username}'";
         $result = mysql_query($update);
         //if(mysql_affected_rows()!=0){
         echo "上传成功";
         //}
     } else {
         echo "上传失败,错误信息:" . $storage->errmsg();
     }
 }
Пример #12
0
 /**
  * 读文件
  *
  * @access  public
  * @param   string
  * @return  string/bytes
  */
 public function file_read($path = '')
 {
     $content = $this->_storage->read($this->_config['storage'], $this->_translate_path($path));
     if ($content == FALSE) {
         show_error(SaeStorage::errmsg());
     }
     return $content;
 }
Пример #13
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);
}*/
Пример #14
0
function SaeStorageErrorMessage()
{
    //无错误则为'Success'
    $storage = new SaeStorage();
    $result = $storage->errmsg();
    return $result;
}
Пример #15
0
 /**
  * 用户更新头像
  *
  * 使用标准Form表单上传,头像文件名为file,只接受jpg格式的文件
  *
  * @param string token , 必填
  * @return user array 
  * @author EasyChen
  */
 public function user_update_avatar()
 {
     if ($_FILES['file']['error'] != 0) {
         return self::send_error(OP_API_UPLOAD_ERROR, 'UPLOAD ERROR ' . $_FILES['file']['error']);
     }
     $tmp_image_name = SAE_TMP_PATH . md5(time() . rand(1, 99999)) . '.tmp.jpg';
     jpeg_up($_FILES['file']['tmp_name'], $tmp_image_name);
     include_once AROOT . 'lib/thumbnail.class.php';
     $file_thumb_name = 'avatar-' . uid() . '.jpg';
     $tmp_file = SAE_TMP_PATH . $file_thumb_name;
     include_once AROOT . 'lib/icon.class.php';
     $icon = new Icon();
     $icon->path = $tmp_image_name;
     $icon->size = 100;
     $icon->dest = $tmp_file;
     $icon->createIcon();
     if (on_sae()) {
         $s = new SaeStorage();
         if (!($thumb_url = $s->write('upload', $file_thumb_name, file_get_contents($tmp_file)))) {
             return self::send_error(OP_API_STORAGE_ERROR, 'SAVE ERROR ' . $s->errmsg());
         }
     } else {
         $local_storage = AROOT . 'static' . DS . 'upload' . DS . 'avatar' . DS;
         $local_storage_url = c('site_url') . DS . 'static' . DS . 'upload' . DS . 'avatar' . DS;
         $thumb_path = $local_storage . $file_thumb_name;
         $thumb_url = $local_storage_url . $file_thumb_name;
         if (!copy($tmp_file, $thumb_path)) {
             return self::send_error(OP_API_STORAGE_ERROR, 'SAVE ERROR ');
         }
     }
     $sql = "UPDATE `user` SET `avatar_small` = '" . s($thumb_url) . "' WHERE `id` = '" . intval(uid()) . "' LIMIT 1";
     run_sql($sql);
     if (mysql_errno() != 0) {
         return self::send_error(OP_API_DB_ERROR, __('API_MESSAGE_DATABASE_ERROR') . mysql_error());
     } else {
         return self::send_result(get_user_info_by_id(intval(uid())));
     }
 }
Пример #16
0
/*
 * 用户上传头像
 */
require_once "connect.php";
$username = $_GET['username'];
//获取用户姓名
$storage = new SaeStorage();
$domain = "userinfo";
if (!empty($_FILES)) {
    $files = $_FILES['file'];
    $filename = $files['name'];
    //获取图片名字
    $fileResource = $files['tmp_name'];
    if ($storage->fileExists($domain, $filename)) {
        $storage->delete($domain, $filename);
    }
    if ($storage->upload($domain, $filename, $fileResource)) {
        $imgUrl = $storage->getCDNUrl($domain, $filename);
        //获取图片地址
        //执行修改语句,将图片URl地址及图片名字写入数据库
        $update = "update `user` set `imgName`='{$filename}', `imgUrl`='{$imgUrl}' where `username`='{$username}'";
        $result = mysql_query($update);
        if (mysql_affected_rows() != 0) {
            echo "上传成功";
        }
    } else {
        echo "上传失败,错误信息:" . $storage->errmsg();
    }
} else {
    echo "文件未找到";
}
Пример #17
-2
 public function invest_in_request()
 {
     $itemid = $this->input->post('itemid');
     $content = $this->input->post('content');
     $order = $this->Order_model->get_by_id($itemid);
     if ($order->creator != $this->get_user_info('realname')) {
         $this->json->output(array('success' => false, 'm' => '您不可以修改他人的预约!'));
     }
     if ($order->state != 'accepted') {
         $this->json->output(array('success' => false, 'm' => '您提交的订单不可修改!'));
     }
     $this->Order_model->invest_order($itemid);
     $max_size = 10;
     // filesize MB
     //var_dump($_FILES);
     if ($_FILES['file']['name'] != "") {
         if ($_FILES['file']['size'] > $max_size * 1024 * 1024) {
             $this->json->output(array('success' => false, 'm' => '上传文件大小不能超过' . $max_size . 'MB'));
         }
         $store_filename = $this->encrypt->sha1($_FILES['file']['name'] . date('Y-m-d H:i:s'));
         $s = new SaeStorage(SAE_ACCESSKEY, SAE_SECRETKEY);
         $url = $s->upload('order', $store_filename, $_FILES['file']['tmp_name']);
         if (!$url) {
             $this->json->output(array('success' => false, 'm' => $s->errmsg()));
         }
         // insert into upload table
         //$file_list = $this->Library_model->get_upload_by_name($_FILES['file']['name'], $dir_path, 'normal');
         //$id = $this->Order_model->create_upload($remark, $_FILES['file']['name'], $_FILES['file']['size'], $dir_path,'',$store_filename, $version);
         $this_step_id = $this->Reminder_model->system_create_item('order_invest', '打款确认流程:提交', '', '/order?itemid=' . $order->itemid, $order->proj_manager, 0, $this->get_user_info('realname'), $content, $content, 1, $itemid, $_FILES['file']['name'], $store_filename, $_FILES['file']['size']);
         $this->Reminder_model->system_create_item('order_invest', '打款确认流程:审核', '', '/order?itemid=' . $order->itemid, 'end', 1, $order->proj_manager, '', $content, 2, $itemid);
         $this->Reminder_model->finish_item($this_step_id);
         $flow_next_user = $this->User_model->get_by_name($order->proj_manager);
         $mail_content_title = '打 款 确 认 申 请';
         $mail_content_mainstr = '<p>以下预约正在申请确认打款:</p><p><table><tr><td>申请人: </td><td>' . $order->creator . '</td></tr>' . '<tr><td>项目名称:</td><td>' . $order->proj_name . '</td></tr>' . '<tr><td>客户姓名:</td><td>' . $order->csr_name . '</td></tr>' . '<tr><td>投资数额:</td><td>' . $order->amount . '万元</td></tr></table></p>' . '<p>请点击<a href="http://rainbowbridge.sinaapp.com/ts/index.php/order?itemid=' . $order->itemid . '"> 这里 </a>查看';
         $mail_content_buttomstr = '您收到这封邮件,是因为您是该预约产品的产品经理。';
         $mail_subject = 'YW34_打款确认申请: 预约号' . $order->itemid;
         $this->utility->noticemail_html($flow_next_user->email, $mail_subject, $mail_content_title, $mail_content_mainstr, $mail_content_buttomstr, '');
         // extjs json decode bug, using echo instead of output
         // $this->json->output(array('success' => true, 'url' => $url));
         echo '{"success":true, "file":"' . $_FILES['file']['name'] . '"}';
         exit;
     } else {
         $this_step_id = $this->Reminder_model->system_create_item('order_invest', '打款确认流程:提交', '', '/order?itemid=' . $order->itemid, $order->proj_manager, 0, $this->get_user_info('realname'), $content, $content, 1, $itemid);
         $this->Reminder_model->system_create_item('order_invest', '打款确认流程:审核', '', '/order?itemid=' . $order->itemid, 'end', 1, $order->proj_manager, '', $content, 2, $itemid);
         $this->Reminder_model->finish_item($this_step_id);
         $flow_next_user = $this->User_model->get_by_name($order->proj_manager);
         $mail_content_title = '打 款 确 认 申 请';
         $mail_content_mainstr = '<p>以下预约正在申请确认打款:</p><p><table><tr><td>申请人: </td><td>' . $order->creator . '</td></tr>' . '<tr><td>项目名称:</td><td>' . $order->proj_name . '</td></tr>' . '<tr><td>客户姓名:</td><td>' . $order->csr_name . '</td></tr>' . '<tr><td>投资数额:</td><td>' . $order->amount . '万元</td></tr></table></p>' . '<p>请点击<a href="http://rainbowbridge.sinaapp.com/ts/index.php/order?itemid=' . $order->itemid . '"> 这里 </a>查看';
         $mail_content_buttomstr = '您收到这封邮件,是因为您是该预约产品的产品经理。';
         $mail_subject = 'YW34_打款确认申请: 预约号' . $order->itemid;
         $this->utility->noticemail_html($flow_next_user->email, $mail_subject, $mail_content_title, $mail_content_mainstr, $mail_content_buttomstr, '');
         // extjs json decode bug, using echo instead of output
         // $this->json->output(array('success' => true, 'url' => $url));
         echo '{"success":true}';
         exit;
     }
 }