为了账号安全,请及时绑定邮箱和手机立即绑定

阿里云OSS对象存储的使用

阿里云OSS对象存储的使用

PHP
红颜莎娜 2019-03-15 11:49:19
为了后面页面的扩展,我想迁移现有项目的静态资源和上传文件到阿里云的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的上传功能呢? 请大佬解惑。
查看完整描述

4 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

……你解码以后存一下再发给OSS不就得了。。。。

查看完整回答
反对 回复 2019-03-18
?
元芳怎么了

TA贡献1798条经验 获得超7个赞

方法不对uploadFile()传本地文件的,oss还有个putObject()方法,用来直接传内存数据,我之前的项目中As3直接HttpRequest传base64数据到后端,获取到了直接传入就能用的。

查看完整回答
反对 回复 2019-03-18
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

oss 有个web直传的功能,更爽

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 1313 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信