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几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
Jun 06 PHP
PHP 简易输出CSV表格文件的方法详解
Jun 20 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
discuz目录文件资料汇总
Dec 30 PHP
PHP两种快速排序算法实例
Feb 15 PHP
php通过文件流方式复制文件的方法
Mar 13 PHP
PHP递归创建多级目录
Nov 05 PHP
php pdo操作数据库示例
Mar 10 PHP
PHP实现权限管理功能示例
Sep 22 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
May 15 PHP
PHP实现爬虫爬取图片代码实例
Mar 03 PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
laravel添加角色和模糊搜索功能的实现代码
一文搞懂php的垃圾回收机制
PHP中strval()函数实例用法
Jun 07 #PHP
使用php的mail()函数实现发送邮件功能
You might like
PHP filter_var() 函数 Filter 函数
2012/04/25 PHP
PHP实现读取一个1G的文件大小
2013/08/24 PHP
php命名空间学习详解
2014/02/27 PHP
php获取文件类型和文件信息的方法
2015/07/10 PHP
yii分页组件用法实例分析
2015/12/28 PHP
php面向对象值单例模式
2016/05/03 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
XAMPP升级PHP版本实现步骤解析
2020/09/04 PHP
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
2014/11/17 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
jQuery事件对象总结
2016/10/17 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
深入浅析Vue中的slots/scoped slots
2018/04/03 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
详解Vue中使用插槽(slot)、聚类插槽
2019/04/12 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
[38:21]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS Newbee
2018/03/31 DOTA
Python自定义类的数组排序实现代码
2016/08/28 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
windows10环境下用anaconda和VScode配置的图文教程
2020/03/30 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
C语言笔试题回忆
2015/04/02 面试题
2014统计局民主生活会对照检查材料思想汇报
2014/10/02 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
委托书范本格式
2019/04/18 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
分享Python异步爬取知乎热榜
2022/04/12 Python