阿里云OSS对象存储的使用
- 为了后面页面的扩展,我想迁移现有项目的静态资源和上传文件到阿里云的OSS上。
- 可是我的上传图片功能,是通过前端传base64,后台解码,然后转移到磁盘上。
- oss类中有方法uploadFile()
/**
* 上传本地文件
*
* @param string $bucket bucket名称
* @param string $object object名称
* @param string $file 本地文件路径
* @param array $options
* @return null
* @throws OssException
*/
public function uploadFile($bucket, $object, $file, $options = NULL)
{
$this->precheckCommon($bucket, $object, $options);
OssUtil::throwOssExceptionWithMessageIfEmpty($file, "file path is invalid");
$file = OssUtil::encodePath($file);
if (!file_exists($file)) {
throw new OssException($file . " file does not exist");
}
$options[self::OSS_FILE_UPLOAD] = $file;
$file_size = filesize($options[self::OSS_FILE_UPLOAD]);
$is_check_md5 = $this->isCheckMD5($options);
if ($is_check_md5) {
$content_md5 = base64_encode(md5_file($options[self::OSS_FILE_UPLOAD], true));
$options[self::OSS_CONTENT_MD5] = $content_md5;
}
if (!isset($options[self::OSS_CONTENT_TYPE])) {
$options[self::OSS_CONTENT_TYPE] = $this->getMimeType($object, $file);
}
$options[self::OSS_METHOD] = self::OSS_HTTP_PUT;
$options[self::OSS_BUCKET] = $bucket;
$options[self::OSS_OBJECT] = $object;
$options[self::OSS_CONTENT_LENGTH] = $file_size;
$response = $this->auth($options);
$result = new PutSetDeleteResult($response);
return $result->getData();
}
- 需要三个参数,可是我base64解码的文件按理说应该是没有路径的,那么我如何在不修改现有功能的情况下,使用oss的上传功能呢?
- 请大佬解惑。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
……你解码以后存一下再发给OSS不就得了。。。。
方法不对uploadFile()传本地文件的,oss还有个putObject()方法,用来直接传内存数据,我之前的项目中As3直接HttpRequest传base64数据到后端,获取到了直接传入就能用的。
oss 有个web直传的功能,更爽
看看这个http://www.thinkphp.cn/code/4...