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.NET的入门教程
Oct 09 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
PHP register_shutdown_function函数的深入解析
Jun 03 PHP
php 批量替换html标签的实例代码
Nov 26 PHP
ThinkPHP快速入门实例教程之数据分页
Jul 01 PHP
php删除左端与右端空格的方法
Nov 29 PHP
php读取文件内容的方法汇总
Jan 24 PHP
PHP获取Exif缩略图的方法
Jul 13 PHP
php对接java现实加签验签的实例
Nov 25 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
php微信公众号开发之答题连闯三关
Oct 20 PHP
laravel框架上传图片实现实时预览功能
Oct 14 PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
laravel添加角色和模糊搜索功能的实现代码
一文搞懂php的垃圾回收机制
PHP中strval()函数实例用法
Jun 07 #PHP
使用php的mail()函数实现发送邮件功能
You might like
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
JavaScript 继承的实现
2009/07/09 Javascript
jquery 最简单易用的表单验证插件
2010/02/27 Javascript
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
2015/02/17 Javascript
jQuery+AJAX实现网页无刷新上传
2015/02/22 Javascript
利用js实现禁止复制文本信息
2015/06/03 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
2016/09/14 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
vue 点击按钮增加一行的方法
2018/09/07 Javascript
JS实现可用滑块滑动的缓动图代码
2019/09/01 Javascript
非常漂亮的js烟花效果
2020/03/10 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
Python序列操作之进阶篇
2016/12/08 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
Python日志模块logging基本用法分析
2018/08/23 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
最新的大学生找工作自我评价
2013/09/29 职场文书
机械系大学毕业生推荐信
2013/11/27 职场文书
汽车销售顾问求职自荐信
2014/01/01 职场文书
理工大学毕业生自荐信范文
2014/02/22 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
辞职离别感言
2015/08/04 职场文书
导游词之新疆尼雅遗址
2019/10/16 职场文书
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
Python基础知识学习之类的继承
2021/05/31 Python
MySql数据库触发器使用教程
2022/06/01 MySQL