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


Posted in PHP onJuly 04, 2021

删除的时候记住不要带域名,也不要带'/'这个路径符号,如全路径是:'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
include './aliyun-oss-php-sdk-2.4.2/autoload.php';
 
use OSS\OssClient;
use OSS\Core\OssException;
 
error_reporting(E_ALL);
ini_set('display_errors', 1); //错误信息
ini_set('display_startup_errors', 1); //php启动错误信息
session_start();
/**
 * 取小数点后两位
 * @param type $str 带小数的数字
 * @return type     返回准确截取两位的小数
 */
 
function num_format($str) {
    if (strpos($str, '.') === false) {
        return $str;
    }
    $retArr = explode(".", $str);
    $strs = substr($retArr[1], 0, 2);
    return $retArr[0] . "." . $strs;
}
 
function create_folders($dir) {
    return is_dir($dir) or ( create_folders(dirname($dir)) and mkdir(iconv("UTF-8", "GBK", $dir), 0777, true));
}
$file = $_FILES['file'];
 
$accessKeyId = '';//RAM alioss后台能拿到
$accessKeySecret = '';//RAM alioss后台能拿到
$endpoint = 'oss-cn-beijing.aliyuncs.com';//alioss后台 概览可以拿到
$bucket = 'planet-cross';//创建的组,随便吧创建,权限正常就行
echo '<pre>';
var_dump($_SESSION);
if ($file) {
    $filename = "/upload/image/" . date("Ymd");
    if (!file_exists("." . $filename)) {
        create_folders("." . $filename);
    }
//获取后缀
    $ary = explode('.', $file['name']);
    $su = end($ary);
//文件名
    $filenames = $filename . "/" . time() . rand(1, 10000) . "." . $su;
    move_uploaded_file($file['tmp_name'], "." . $filenames);
 
    $ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint);
    $filenames = ltrim($filenames, '/'); //去除 第一个 '/'
// 开始上传
    $pic = $filenames;
    try {
        $oss = $ossClient->uploadFile($bucket, $pic, $filenames);
        $filenames = $oss['info']['url'];
        $_SESSION['file']=$filenames;
        echo $filenames;
        echo '<img src="' . $filenames . '" />';
        //删除本地文件
    } catch (\OSS\Core\OssException $e) {
        die("Failed to upload file ");
        return false;
    }
} else if(!empty($_SESSION['file'])){
    try {
        $patch=trim(parse_url($_SESSION['file'])['path'],'/');
        $ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint);
        $oss=$ossClient->deleteObject($bucket,$patch);
        $_SESSION['file']=null;
    } catch (OssException $e) {
        printf(__FUNCTION__ . ": FAILED\n");
        printf($e->getMessage() . "\n");
        return;
    }
}
 
 
    /**
     * 删除文件
     * 可以删除调用ajaxfile上传的文件
     * @param type $path_file   文件路径
     * 删除的时候记住不要带域名 也不要带  / 这个路径符号
     */
    function delfile($path_file) {
        if (config('config.OSS_OPEN')) {
            try {
                // 删除的时候记住不要带域名,也不要带'/'这个路径符号,如全路径是:'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'。
                $path_file=trim(parse_url($path_file)['path'],'/');//去掉域名,
                $ossClient = new \OSS\OssClient(config('config.OSS_KEY'), config('config.OSS_SECRET'), config('config.OSS_ENDPOINT'));
                $ossClient->deleteObject(config('config.OSS_BUCKET'), $path_file);
            } catch (OssException $e) {
                printf(__FUNCTION__ . ": FAILED\n");
                printf($e->getMessage() . "\n");
                return;
            }
        } else {
            $val2 = "." . $path_file;
            if (file_exists($val2)) {
                $unlinkfilename = trim($path_file, "/");
                unlink($unlinkfilename);
            }
        }
    }

删除的时候记住不要带域名,也不要带'/'这个路径符号,如全路径是:'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文件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
PHP原理之异常机制深入分析
Aug 08 PHP
PHP数组实例总结与说明
Aug 23 PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
支持png透明图片的php生成缩略图类分享
Feb 08 PHP
php插入排序法实现数组排序实例
Feb 16 PHP
php提高网站效率的技巧
Sep 29 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
php微信公众号js-sdk开发应用
Nov 28 PHP
yii2中LinkPager增加总页数和总记录数的实例
Aug 28 PHP
Laravel下生成验证码的类
Nov 15 PHP
如何让PHP编码更加好看利于阅读
May 12 PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
laravel添加角色和模糊搜索功能的实现代码
一文搞懂php的垃圾回收机制
PHP中strval()函数实例用法
Jun 07 #PHP
使用php的mail()函数实现发送邮件功能
You might like
PHP Reflection API详解
2015/05/12 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
PHP模拟post提交数据方法汇总
2016/02/16 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
javascript call和apply方法
2008/11/24 Javascript
JavaScript 克隆数组最简单的方法
2009/02/12 Javascript
在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗
2011/06/02 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
js实现数字滚动特效
2019/12/16 Javascript
Python简单连接MongoDB数据库的方法
2016/03/15 Python
Python过滤列表用法实例分析
2016/04/29 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
Python实现动态添加属性和方法操作示例
2018/07/25 Python
python根据时间获取周数代码实例
2019/09/30 Python
python下载库的步骤方法
2019/10/12 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
Python调用.NET库的方法步骤
2019/12/27 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
超市业务员岗位职责
2013/12/05 职场文书
健康教育评估方案
2014/05/25 职场文书
农业局党的群众路线教育实践活动整改方案
2014/09/20 职场文书
优秀教师事迹材料
2014/12/15 职场文书
社团个人总结范文
2015/03/05 职场文书
大学生敬老院活动总结
2015/05/07 职场文书
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript