|
原框架为客服正在改动的 tp3.2
第一步 下载OSS文件[太久远了忘掉了]
第二部 控制器中引入
// 引入 OSS
use OSS\Core\OssException;
use OSS\OssClient;
3.上传函数【直接从客户老版本复制的 我自己写的 】
- // 真实上传
- public function upload(){
- if(!session('uid')){redirect(U('Public/login'));}
-
- $upload = new \Think\Upload();
- $upload->maxSize = C('UPLOAD_MAXSIZE') ;
- $upload->saveName = array('uniqid', array('', true));
- $upload->exts = C('UPLOAD_EXTS');
- $upload->savePath = C('UPLOAD_SAVEPATH');
-
- vendor('OSS.autoload');
- $ossConfig = C('OSS');
- $accessKeyId = $ossConfig['ACCESS_KEY_ID'];//阿里云OSS ID
- $accessKeySecret = $ossConfig['ACCESS_KEY_SECRET'];//阿里云OSS 秘钥
- $endpoint = $ossConfig['ENDPOINT'];//阿里云OSS 地址
- $ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint);
- $bucket = $ossConfig['BUCKET']; //oss中的文件上传空间
- $myshow = $ossConfig['MYSHOW']; //自己的域名
- $mypath = $ossConfig['MYPATH']; // bucket 中 的存放路径
-
- $info = $upload->upload();
- $gourl = 'index.php/home/public/attfile/attid/'.I('attid').'/';
- if(!$info) {
- echo "<script language='javascript' type='text/javascript'>";
- echo "alert('上传失败!$upload->getError()');";
- echo "window.location.href='$gourl'";
- echo "</script>";
- }else{
- foreach($info as $k => $v)
- {
- // 设置日期目录
- $dir = date('Y-m-d').'/';
- $object = $mypath. $dir .$v['savename'];//想要保存文件的名称
- //这个数组是存上传成功以后返回的访问路径,多文件时使用implode函数将其组合
- $downlink[] = $bucket.'.'.$endpoint.'/'.$object;
-
- $file = 'uploads/'.str_replace('./','', $v["savepath"]). $v['savename'];//本地文件路径
-
- try {
- $ossClient->uploadFile($bucket, $object, $file);
- //上传OSS成功
- $ss=I('attid');
- $data['attid']=$ss;
- //$data['folder']='Uploads/'.str_replace('./','', $v["savepath"]);
- $data['folder']= $myshow.$mypath.$dir ; // 文件在OSS中的路径 域名 + 目录 + 日期
- $data['filename']= $v["savename"];
- $data['filetype']=$v["ext"];
- $data['filedesc']=$v["name"];
- $data['company']=$_SESSION['company'];
- $data['uid']=session('uid');
- $data['addtime']=date("Y-m-d H:i:s",time());
- if(!empty($ss)){
- M('files')->data($data)->add();
- }
-
- //这里可以删除上传到本地的文件。[文件虽然删除 但是日期目录仍然保存]
- unlink($file);
- } catch (OssException $e) {
- // 报错提示 联系 管理员
- printf("Please contact the administrator");
- //上传失败
- printf($e->getMessage() . "\n");
- return;
- }
-
- }
- }
- $filename=$info["filename"]["name"];
- echo "<script language='javascript' type='text/javascript'>";
- echo "alert('文件$filename 上传成功');";
- echo "window.location.href='$gourl'";
- echo "</script>";
- }
-
复制代码
4. 删除
- // 进行删除操作
- public function del( )
- {
- $data=I('post.');
-
- vendor('OSS.autoload');
- $ossConfig = C('OSS');
- $accessKeyId = $ossConfig['ACCESS_KEY_ID'];//阿里云OSS ID
- $accessKeySecret = $ossConfig['ACCESS_KEY_SECRET'];//阿里云OSS 秘钥
- $endpoint = $ossConfig['ENDPOINT'];//阿里云OSS 地址
- $ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint);
- $bucket = $ossConfig['BUCKET']; //oss中的文件上传空间
- $myshow = $ossConfig['MYSHOW']; //自己的域名
- $mypath = $ossConfig['MYPATH']; // bucket 中 的存放路径
-
- // 删掉数据库中的指定数据
- M('files')->where(array('id'=>$data['id']))->delete();
-
- // 删掉oss上的文件
- try{
-
- $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
- $filename = substr($data['filename'],strripos($data['filename'],"dezheng")); // 筛选字符串 注意前面不能 加上 /杠
-
- $ossClient->deleteObject($bucket, $filename);
-
- return 1;
-
- } catch(OssException $e) {
- var_dump(333);
- printf(__FUNCTION__ . ": FAILED\n");
- printf($e->getMessage() . "\n");
- return 2;
- }
-
- }
复制代码
看实际情况用。
|
|