为了后面页面的扩展,我想迁移现有项目的静态资源和上传文件到阿里云的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 回答
- 0 关注
- 1313 浏览
添加回答
举报
0/150
提交
取消