ALIOSS::upload_file_by_content PHP Method

upload_file_by_content() public method

通过在http body中添加内容来上传文件,适合比较小的文件 根据api约定,需要在http header中增加content-length字段
Since: 2011-11-14
public upload_file_by_content ( string $bucket, string $object, array $options = null ) : ResponseCore
$bucket string (Required)
$object string (Required)
$options array (Optional)
return ResponseCore
    public function upload_file_by_content($bucket, $object, $options = null)
    {
        //options
        $this->validate_options($options);
        if (!$options) {
            $options = array();
        }
        //bucket
        $this->is_empty($bucket, OSS_BUCKET_IS_NOT_ALLOWED_EMPTY);
        //object
        $this->is_empty($object, OSS_OBJECT_IS_NOT_ALLOWED_EMPTY);
        //内容校验
        $this->validate_content($options);
        $objArr = explode('/', $object);
        $basename = array_pop($objArr);
        $extension = explode('.', $basename);
        $extension = array_pop($extension);
        $content_type = MimeTypes::get_mimetype(strtolower($extension));
        $options[self::OSS_BUCKET] = $bucket;
        $options[self::OSS_METHOD] = 'PUT';
        $options[self::OSS_OBJECT] = $object;
        if (!isset($options[self::OSS_LENGTH])) {
            $options[self::OSS_CONTENT_LENGTH] = strlen($options[self::OSS_CONTENT]);
        } else {
            $options[self::OSS_CONTENT_LENGTH] = $options[self::OSS_LENGTH];
        }
        if (!isset($options[self::OSS_CONTENT_TYPE]) && isset($content_type) && !empty($content_type)) {
            $options[self::OSS_CONTENT_TYPE] = $content_type;
        }
        $response = $this->auth($options);
        return $response;
    }

Usage Example

示例#1
0
文件: avatar.php 项目: beyondye/ENPHP
 private function upload($data)
 {
     $data = explode('|', $data);
     $ch = curl_init($data[1]);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     $img = curl_exec($ch);
     $info = curl_getinfo($ch);
     if (curl_errno($ch) > 0) {
         curl_close($ch);
         echo "{$data[1]} | {$data[0]} Failed \n";
         return;
     }
     curl_close($ch);
     require_once APP_DIR . 'vendors/objectstorage/sdk.class.php';
     require_once APP_DIR . 'vendors/objectstorage/util/oss_util.class.php';
     $oss = new \ALIOSS(OSS_ACCESS_ID, OSS_ACCESS_KEY, OSS_ENDPOINT);
     $object = "avatar/{$data[0]}";
     $content = $img;
     $options = array('Content-Type' => $info['content_type'], 'content' => $content, 'length' => strlen($content));
     $res = $oss->upload_file_by_content(OSS_TEST_BUCKET, $object, $options);
     \OSSUtil::print_res($res, "{$data[1]} | {$data[0]}");
     if (!$this->user->update(['avatar' => time()], ['uid' => $data[0]])) {
         echo " database updated failed. \n";
     }
 }
All Usage Examples Of ALIOSS::upload_file_by_content