/** * Write a new file. * * @param string $path * @param string $contents * @param Config $config Config object * @return array|false false on failure file meta data on success */ public function write($path, $contents, Config $config) { $object = $this->applyPathPrefix($path); $options = $this->getOptionsFromConfig($config); if (!isset($options[OssClient::OSS_LENGTH])) { $options[OssClient::OSS_LENGTH] = Util::contentSize($contents); } if (!isset($options[OssClient::OSS_CONTENT_TYPE])) { $options[OssClient::OSS_CONTENT_TYPE] = Util::guessMimeType($path, $contents); } try { $this->client->putObject($this->bucket, $object, $contents, $options); } catch (OssException $e) { return false; } $type = 'file'; $result = compact('type', 'path', 'contents'); $result['mimetype'] = $options[OssClient::OSS_CONTENT_TYPE]; $result['size'] = $options[OssClient::OSS_LENGTH]; return $result; }
/** * 列出Bucket内所有目录和文件, 根据返回的nextMarker循环得到所有Objects * * @param OssClient $ossClient OssClient实例 * @param string $bucket 存储空间名称 * @return null */ function listAllObjects($ossClient, $bucket) { //构造dir下的文件和虚拟目录 for ($i = 0; $i < 100; $i += 1) { $ossClient->putObject($bucket, "dir/obj" . strval($i), "hi"); $ossClient->createObjectDir($bucket, "dir/obj" . strval($i)); } $prefix = 'dir/'; $delimiter = '/'; $nextMarker = ''; $maxkeys = 30; while (true) { $options = array('delimiter' => $delimiter, 'prefix' => $prefix, 'max-keys' => $maxkeys, 'marker' => $nextMarker); var_dump($options); try { $listObjectInfo = $ossClient->listObjects($bucket, $options); } catch (OssException $e) { printf(__FUNCTION__ . ": FAILED\n"); printf($e->getMessage() . "\n"); return; } // 得到nextMarker,从上一次listObjects读到的最后一个文件的下一个文件开始继续获取文件列表 $nextMarker = $listObjectInfo->getNextMarker(); $listObject = $listObjectInfo->getObjectList(); $listPrefix = $listObjectInfo->getPrefixList(); var_dump(count($listObject)); var_dump(count($listPrefix)); if ($nextMarker === '') { break; } } }
use OSS\Http\RequestCore; use OSS\OssClient; use OSS\Core\OssException; const OSS_ACCESS_ID = '您从OSS获得的AccessKeyId'; const OSS_ACCESS_KEY = '您从OSS获得的AccessKeySecret'; const OSS_ENDPOINT = 'OSS的域名,如 oss-cn-hangzhou.aliyuncs.com'; $bucket = "您在OSS上的Bucket"; //绑定OSS的URL,前面要加http,比如 http://www.yoursite.com/ $urls = '您访问OSS的地址/'; //读取图片base64编码格式 $base64_image_content = file_get_contents("php://input"); if (preg_match('/^(data:\\s*image\\/(\\w+);base64,)/', $base64_image_content, $result)) { $type = $result[2]; if ($type != "png") { exit("0"); } } $files = time(); //传到OSS $base64_body = substr(strstr($base64_image_content, ','), 1); $object = "face/" . $files . ".png"; $content = base64_decode($base64_body); $ossClient = new OssClient(OSS_ACCESS_ID, OSS_ACCESS_KEY, OSS_ENDPOINT, false); try { $ossClient->putObject($bucket, $object, $content); } catch (OssException $e) { print $e->getMessage(); } session_start(); $_SESSION['face'] = $urls . "face/" . $files . ".png"; echo "1";