经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » PHP » 查看文章
php 文件上传至OSS及删除远程阿里云OSS文件
来源:jb51  时间:2021/7/5 8:33:50  对本文有异议

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

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

到此这篇关于php 文件上传至OSS及删除远程阿里云OSS文件的文章就介绍到这了,更多相关php删除阿里云OSS文件内容请搜索w3xue以前的文章或继续浏览下面的相关文章希望大家以后多多支持w3xue!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号