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;
}
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"; } }