当前位置:首页 > PHP教程 > php文件操作 > 列表

php 文件上传至OSS及删除远程阿里云OSS文件

发布:smiling 来源: PHP粉丝网  添加日期:2022-05-06 09:34:15 浏览: 评论:0 

今天给大家介绍php 文件上传至OSS及删除远程阿里云OSS文件的方法,在删除文件的时候大家记住千万不要带域名,具体操作示例参考下本文。

删除的时候记住不要带域名,也不要带'/'这个路径符号,如全路径是:'https://hxty.oss-cn-beijing.aliyuncs.com/data/pdf/contract/2021-06-16/HXSHB21061611594482340c.pdf',则这里的path_file路径为:'data/pdf/contract/2021-06-16/HXSHB21061611594482340c.pdf'。

  1. <?php 
  2. include './aliyun-oss-php-sdk-2.4.2/autoload.php'
  3.    
  4. use OSS\OssClient; 
  5. use OSS\Core\OssException; 
  6.    
  7. error_reporting(E_ALL); 
  8. ini_set('display_errors', 1); //错误信息 
  9. ini_set('display_startup_errors', 1); //php启动错误信息 
  10. session_start(); 
  11. /** 
  12.  * 取小数点后两位 
  13.  * @param type $str 带小数的数字 
  14.  * @return type     返回准确截取两位的小数 
  15.  */ 
  16.    
  17. function num_format($str) { 
  18.     if (strpos($str'.') === false) { 
  19.         return $str
  20.     } 
  21.     $retArr = explode("."$str); 
  22.     $strs = substr($retArr[1], 0, 2); 
  23.     return $retArr[0] . "." . $strs
  24.    
  25. function create_folders($dir) { 
  26.     return is_dir($diror ( create_folders(dirname($dir)) and mkdir(iconv("UTF-8""GBK"$dir), 0777, true)); 
  27. $file = $_FILES['file']; 
  28.    
  29. $accessKeyId = '';//RAM alioss后台能拿到 
  30. $accessKeySecret = '';//RAM alioss后台能拿到 
  31. $endpoint = 'oss-cn-beijing.aliyuncs.com';//alioss后台 概览可以拿到 
  32. $bucket = 'planet-cross';//创建的组,随便吧创建,权限正常就行 
  33. echo '<pre>'
  34. var_dump($_SESSION); 
  35. if ($file) { 
  36.     $filename = "/upload/image/" . date("Ymd"); 
  37.     if (!file_exists("." . $filename)) { 
  38.         create_folders("." . $filename); 
  39.     } 
  40. //获取后缀 
  41.     $ary = explode('.'$file['name']); 
  42.     $su = end($ary); 
  43. //文件名 
  44.     $filenames = $filename . "/" . time() . rand(1, 10000) . "." . $su
  45.     move_uploaded_file($file['tmp_name'], "." . $filenames); 
  46.    
  47.     $ossClient = new \OSS\OssClient($accessKeyId$accessKeySecret$endpoint); 
  48.     $filenames = ltrim($filenames'/'); //去除 第一个 '/' 
  49. // 开始上传 
  50.     $pic = $filenames
  51.     try { 
  52.         $oss = $ossClient->uploadFile($bucket$pic$filenames); 
  53.         $filenames = $oss['info']['url']; 
  54.         $_SESSION['file']=$filenames
  55.         echo $filenames
  56.         echo '<img src="' . $filenames . '" />'
  57.         //删除本地文件 
  58.     } catch (\OSS\Core\OssException $e) { 
  59.         die("Failed to upload file "); 
  60.         return false; 
  61.     } 
  62. else if(!emptyempty($_SESSION['file'])){ 
  63.     try { 
  64.         $patch=trim(parse_url($_SESSION['file'])['path'],'/'); 
  65.         $ossClient = new \OSS\OssClient($accessKeyId$accessKeySecret$endpoint); 
  66.         $oss=$ossClient->deleteObject($bucket,$patch); 
  67.         $_SESSION['file']=null; 
  68.     } catch (OssException $e) { 
  69.         printf(__FUNCTION__ . ": FAILED\n"); 
  70.         printf($e->getMessage() . "\n"); 
  71.         return
  72.     } 
  73.    
  74.    
  75.     /** 
  76.      * 删除文件 
  77.      * 可以删除调用ajaxfile上传的文件 
  78.      * @param type $path_file   文件路径 
  79.      * 删除的时候记住不要带域名 也不要带  / 这个路径符号 
  80.      */ 
  81.     function delfile($path_file) { 
  82.         if (config('config.OSS_OPEN')) { 
  83.             try { 
  84.                 // 删除的时候记住不要带域名,也不要带'/'这个路径符号,如全路径是:'https://hxty.oss-cn-beijing.aliyuncs.com/data/pdf/contract/2021-06-16/HXSHB21061611594482340c.pdf',则这里的path_file路径为:'data/pdf/contract/2021-06-16/HXSHB21061611594482340c.pdf'。 
  85.                 $path_file=trim(parse_url($path_file)['path'],'/');//去掉域名, 
  86.                 $ossClient = new \OSS\OssClient(config('config.OSS_KEY'), config('config.OSS_SECRET'), config('config.OSS_ENDPOINT')); 
  87.                 $ossClient->deleteObject(config('config.OSS_BUCKET'), $path_file); 
  88.             } catch (OssException $e) { 
  89.                 printf(__FUNCTION__ . ": FAILED\n"); 
  90.                 printf($e->getMessage() . "\n"); 
  91.                 return
  92.             } 
  93.         } else { 
  94.             $val2 = "." . $path_file
  95.             if (file_exists($val2)) { 
  96.                 $unlinkfilename = trim($path_file"/"); 
  97.                 unlink($unlinkfilename); 
  98.             } 
  99.         } 
  100.     } 

删除的时候记住不要带域名,也不要带'/'这个路径符号,如全路径是:'https://hxty.oss-cn-beijing.aliyuncs.com/data/pdf/contract/2021-06-16/HXSHB21061611594482340c.pdf',则这里的path_file路径为:'data/pdf/contract/2021-06-16/HXSHB21061611594482340c.pdf'。

Tags: php文件上传至OSS

分享到: