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 破解防盗链图片函数
Dec 09 PHP
php流量统计功能的实现代码
Sep 29 PHP
ajax取消挂起请求的处理方法
Mar 18 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
Dec 17 PHP
Yii数据模型中rules类验证器用法分析
Jul 15 PHP
php 截取utf-8格式的字符串实例代码
Oct 30 PHP
php发送http请求的常用方法分析
Nov 08 PHP
全面解析PHP面向对象的三大特征
Jun 10 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
Sep 29 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
Feb 25 PHP
PHP操作XML中XPath的应用示例
Jul 04 PHP
php抽象方法和普通方法的区别点总结
Oct 13 PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
laravel添加角色和模糊搜索功能的实现代码
一文搞懂php的垃圾回收机制
PHP中strval()函数实例用法
Jun 07 #PHP
使用php的mail()函数实现发送邮件功能
You might like
java模拟PHP的pack和unpack类
2016/04/13 PHP
详解PHP如何更好的利用PHPstorm的自动提示
2017/08/18 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
Javascript中的isNaN函数使用说明
2011/11/10 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
2013/08/19 Javascript
JS实现两个大数(整数)相乘
2014/04/28 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
JavaScript实现鼠标点击导航栏变色特效
2017/02/08 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
Python中实现参数类型检查的简单方法
2015/04/21 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
ipython和python区别详解
2019/06/26 Python
Django中提供的6种缓存方式详解
2019/08/05 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
使用html5制作loading图的示例
2014/04/14 HTML / CSS
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
数据库的约束含义
2012/09/09 面试题
AJAX应用和传统Web应用有什么不同
2013/08/24 面试题
工商管理毕业生推荐信
2013/12/24 职场文书
作文评语怎么写
2014/12/25 职场文书
平遥古城导游词
2015/02/03 职场文书
Spring boot应用启动后首次访问很慢的解决方案
2021/06/23 Java/Android
python库sklearn常用操作
2021/08/23 Python
详解jQuery的核心函数和事件处理
2022/02/18 jQuery
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技