阿里云 OSS 多次上传同一张图片失败,如何解决呢? [ 2.0 版本 ]
阿里云 OSS 多次上传同一张图片失败,如何解决呢?
FileUpload 上传图片的时候,第一张图片可以上传成功,第二次上传同一张图片的时候点击没反应,换一张图片就可以正常上传,这个怎么弄可以让即使多次上传同一张图片也可以?
共 3 个回答
-
你是服务器上传还是前端JS 上传呢
共 2 条回复Lucifer_wn 回复于 2020-11-17 10:02 回复@PHP学院的中学生 我对接第三方接口一般不用别人的插件,自己写就最好,想怎么改就怎么改。我自己写的上传oss没出现你这个情况,同一张图片随时随地可以传。你的情况要么是插件有问题,要么前端没写好导致。没代码我也很难帮你找出问题所在
-
Lucifer_wn 回答于 2020-11-17 10:09 举报
/** * 上传文件至OSS * @param array $file 上传后的临时文件对象 * @return string|int 返回地址或错误码 * @throws */ public function uploadFileOss(&$file) { if (empty($file)) return -1; if ($file['error'] != 0) { FunctionUtil::newLog($file['error'], 'error', 'uploadFile'); return -2; } //设置文件黑名单 if (strpos($file['name'], 'php') !== false) return -3; //设置文件白名单 $fileNameArr = explode('.', $file['name']); if (!in_array(end($fileNameArr), ['jpg', 'gif', 'png', 'jpeg'])) return -3; //上传至OSS $oss = new Oss(); $nameArr = explode('.', $file['name']); $suffix = end($nameArr); //获取后缀 $object = 'images/' . date('Y-m', time()) . '/avatar/' . md5($file['tmp_name'] . uniqid()) . '.' . $suffix; $uploadOssResult = $oss->uploadFile($object, $file['tmp_name']); return $uploadOssResult['info']['url']; } #######下面方法是我自己封装的oss操作类############################################################### class Oss { //阿里云accessKeyId private $accessKeyId; //阿里云accessKeySecret private $accessKeySecret; //OSS endpoint // private $endPoint = 'oss-cn-shenzhen-internal.aliyuncs.com'; //默认内网访问 private $endPoint; //默认外网访问 //OSS Bucket 存储空间名称 private $bucket; public $ossClient; public function __construct() { //设置默认属性 $ossConfig = \Yii::$app->params['taobao']['oss']; $this->setAccessKeyId($ossConfig['accessKeyId']); $this->setAccessKeySecret($ossConfig['accessKeySecret']); $this->setBucket($ossConfig['bucket']); $this->setEndPoint($ossConfig['extEndPoint']); if (!strpos($_SERVER['SERVER_NAME'], '52tktk')) { //不在线上服务器则外网访问 $this->setEndPoint($ossConfig['extEndPoint']); //外网访问 } //加载oss客户端对象 $this->ossClient = new OssClient($this->accessKeyId, $this->accessKeySecret, $this->endPoint); } public function setAccessKeyId($accessKeyId) { $this->accessKeyId = $accessKeyId; } public function setAccessKeySecret($accessKeySecret) { $this->accessKeySecret = $accessKeySecret; } public function setEndPoint($endPoint) { $this->endPoint = $endPoint; } public function setBucket($bucket) { $this->bucket = $bucket; } public function getBucket() { return $this->bucket; } public function getShowUrl() { return 'https://' . $this->bucket . $this->endPoint; } /** * 文件上传,自动识别简单上传或者分片上传 * @param string $object object名称 * @param string $file 需要上传的本地文件的路径 * @param array $options Key-Value数组 * @return null * @throws OssException */ public function uploadFile($object, $file, $options = null) { return $this->ossClient->multiuploadFile($this->bucket, $object, $file, $options); } /** * 字符串上传 * @param string $object 需要上传的本地文件的路径 * @param string $content 内容 * @return null */ public function putObject($object, $content) { return $this->ossClient->putObject($this->bucket, $object, $content); } }
PHP学院的中学生
注册时间:2018-10-23
最后登录:2024-09-23
在线时长:168小时13分
最后登录:2024-09-23
在线时长:168小时13分
- 粉丝29
- 金钱4725
- 威望30
- 积分6705