当前位置:首页 > 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.    
  26. function create_folders($dir) { 
  27.     return is_dir($dir) or ( create_folders(dirname($dir)) and mkdir(iconv("UTF-8", "GBK", $dir), 0777, true)); 
  28. } 
  29. $file = $_FILES['file']; 
  30.    
  31. $accessKeyId = '';//RAM alioss后台能拿到 
  32. $accessKeySecret = '';//RAM alioss后台能拿到 
  33. $endpoint = 'oss-cn-beijing.aliyuncs.com';//alioss后台 概览可以拿到 
  34. $bucket = 'planet-cross';//创建的组,随便吧创建,权限正常就行 
  35. echo '<pre>'; 
  36. var_dump($_SESSION); 
  37. if ($file) { 
  38.     $filename = "/upload/image/" . date("Ymd"); 
  39.     if (!file_exists("." . $filename)) { 
  40.         create_folders("." . $filename); 
  41.     } 
  42. //获取后缀 
  43.     $ary = explode('.', $file['name']); 
  44.     $su = end($ary); 
  45. //文件名 
  46.     $filenames = $filename . "/" . time() . rand(1, 10000) . "." . $su; 
  47.     move_uploaded_file($file['tmp_name'], "." . $filenames); 
  48.    
  49.     $ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint); 
  50.     $filenames = ltrim($filenames, '/'); //去除 第一个 '/' 
  51. // 开始上传 
  52.     $pic = $filenames; 
  53.     try { 
  54.         $oss = $ossClient->uploadFile($bucket, $pic, $filenames); 
  55.         $filenames = $oss['info']['url']; 
  56.         $_SESSION['file']=$filenames; 
  57.         echo $filenames; 
  58.         echo '<img src="' . $filenames . '" />'; 
  59.         //删除本地文件 
  60.     } catch (\OSS\Core\OssException $e) { 
  61.         die("Failed to upload file "); 
  62.         return false; 
  63.     } 
  64. } else if(!emptyempty($_SESSION['file'])){ 
  65.     try { 
  66.         $patch=trim(parse_url($_SESSION['file'])['path'],'/'); 
  67.         $ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint); 
  68.         $oss=$ossClient->deleteObject($bucket,$patch); 
  69.         $_SESSION['file']=null; 
  70.     } catch (OssException $e) { 
  71.         printf(__FUNCTION__ . ": FAILED\n"); 
  72.         printf($e->getMessage() . "\n"); 
  73.         return; 
  74.     } 
  75. } 
  76.    
  77.    
  78.     /** 
  79.      * 删除文件 
  80.      * 可以删除调用ajaxfile上传的文件 
  81.      * @param type $path_file   文件路径 
  82.      * 删除的时候记住不要带域名 也不要带  / 这个路径符号 
  83.      */ 
  84.     function delfile($path_file) { 
  85.         if (config('config.OSS_OPEN')) { 
  86.             try { 
  87.                 // 删除的时候记住不要带域名,也不要带'/'这个路径符号,如全路径是:'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'。 
  88.                 $path_file=trim(parse_url($path_file)['path'],'/');//去掉域名, 
  89.                 $ossClient = new \OSS\OssClient(config('config.OSS_KEY'), config('config.OSS_SECRET'), config('config.OSS_ENDPOINT')); 
  90.                 $ossClient->deleteObject(config('config.OSS_BUCKET'), $path_file); 
  91.             } catch (OssException $e) { 
  92.                 printf(__FUNCTION__ . ": FAILED\n"); 
  93.                 printf($e->getMessage() . "\n"); 
  94.                 return; 
  95.             } 
  96.         } else { 
  97.             $val2 = "." . $path_file; 
  98.             if (file_exists($val2)) { 
  99.                 $unlinkfilename = trim($path_file, "/"); 
  100.                 unlink($unlinkfilename); 
  101.             } 
  102.         } 
  103.     } 

删除的时候记住不要带域名,也不要带'/'这个路径符号,如全路径是:'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

分享到: