我购买阿里云oss api传送base64图片怎么上传?

我购买阿里云oss插件  api传送base64图片怎么上传?我不知道怎么调用啊 应该判断是本地存储 如果是阿里云的话 那么调用阿里云 然后上传 上传成功后 返回地址 保存到附件中 这个方法在哪里?
已邀请:

dolphinphp

赞同来自: laozhu1986

先将base64的图片保存到服务器,然后再调用插件保存。
 
比如
 
$pic = $this->request->post('pic'); // 假设这是接收过来的base64图片数据

if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $pic, $result)){
$file_type = $result[2]; // 图片后缀
$file_content = $result[1]; // 图片内容
$file_name = md5($pic) . '.'.$file_type; // 保存图片名
$dir = config('upload_path') . DS . 'images' . DS . date('Ymd', $this->request->time());
$file_path = $dir . DS . $file_name;

if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}

// 将base64图片保存到服务器
if (false === file_put_contents($file_path, base64_decode(str_replace($file_content, '', $signature)))){
$this->error('上传出错');
}else{
// 打开已保存的图片
$file = new File($file_path);

// 附件上传钩子,用于第三方文件上传扩展
if (config('upload_driver') != 'local') {
$hook_result = Hook::listen('upload_attachment', $file, ['from' => '', 'module' => $this->request->module()], true);
if (false !== $hook_result) {
return $hook_result;
}
} else {
$file_info = [
'uid' => session('user_auth.uid'),
'name' => $file_name,
'mime' => 'image/png',
'path' => 'uploads/images/' . date('Ymd', $this->request->time()) . '/' . $file_name,
'ext' => 'png',
'size' => $file->getSize(),
'md5' => $file->hash('md5'),
'sha1' => $file->hash('sha1'),
'module' => $this->request->module()
];

// 写入数据库
$result = AttachmentModel::create($file_info);
if ($result) {
return json([
'code' => 1,
'info' => '上传成功',
'id' => $result['id'],
'path' => $result['path']
]);
} else {
return json([
'code' => 0,
'info' => '上传失败'
]);
}
}
}
}

laozhu1986

赞同来自:

上传之后 返回的地址在哪里?

要回复问题请先登录注册