首先帝国后台增加个扩展变量ossurl,缓存,值为“https://oss.wenyunfang.com/”,另外需要开启php扩展组件finfo。下面开始上帝国上传到七牛云(数据库保存地址这个已经去掉)
//七牛云同步上传文件功能function QiniuUp($filename, $originalFileName) {global $public_r,$empire, $dbtbpre;require ECMS_PATH. 'e/extend/Qiniu/chatautoload.php';require ECMS_PATH. 'e/extend/Qiniu/qiniu_conf.php';$savepath = date('Y/m/d');if (!$QiniuConf['ak'] ||!$QiniuConf['sk'] ||!$QiniuConf['bucket'] ||!$QiniuConf['tongbu_up']) {return ["code" => "0","msg" => "七牛云配置信息不完整"];}$allowedMimeTypes = ['image/gif','image/jpeg','image/png','image/webp'];$finfo = finfo_open(FILEINFO_MIME_TYPE);$mimeType = finfo_file($finfo, $filename);finfo_close($finfo);if (!in_array($mimeType, $allowedMimeTypes)) {return ["code" => "0","msg" => "不允许的文件类型: ". $mimeType];}$ext = pathinfo($originalFileName, PATHINFO_EXTENSION);$ext = strtolower($ext);$date = date('Ymd'); $fileContent = file_get_contents($filename);$md5Hash = md5($fileContent); $fullname = $date. '_' . $md5Hash. '.' . $ext;$key = "d/chatupload/" . $savepath. "/" . $fullname;$Auth = new \Qiniu\Auth($QiniuConf['ak'], $QiniuConf['sk']);$token = $Auth->uploadToken($QiniuConf['bucket']); // 上传空间名称$uploadMgr = new \Qiniu\Storage\UploadManager();list($ret, $err) = $uploadMgr->putFile($token, $key, $filename);if ($err!== null) {return ["code" => "0","msg" => "上传到七牛云失败,错误信息: ". json_encode($err)];} else {$fileSize = filesize($filename); // 获取文件大小return ["code" => "1","filepath" => $public_r['add_ossurl']. $key,"fullname" => $fullname,"ext" => ltrim($ext, '.'), "original" => $originalFileName,"size" => $fileSize,"filename" => pathinfo($fullname, PATHINFO_FILENAME),"msg" => "上传成功"];}}
返回的都是数组,方便整合前端的哈。此外需要更安全的自行添加。毕竟99元的小水管也只是把聊天记录里面的图片同步到七牛OSS而已,此外七牛的OSS的SDK安装都七牛官方的!只是在此基础上面上面增加了扩展名判断而已。
比如我本地上传或者复制粘贴上传的后端接口,我只需要调用这个函数而已。本地上传为例。
$file = $_FILES['file'];$tmpFilePath = $file['tmp_name'];$originalFileName = $file['name'];$fileinfo = QiniuUp($tmpFilePath, $originalFileName);$api->json($fileinfo);是不是很简单的呢 ?就这么几行代码加个自定义函数就完成了上传文件到免费10G的七牛云了
页:
1
[2]