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 相关文章推荐
mysql时区问题
Mar 26 PHP
PHPCMS的使用小结
Sep 20 PHP
PHP中register_globals参数为OFF和ON的区别(register_globals 使用详解)
Feb 05 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
Jun 03 PHP
header导出Excel应用示例
Jan 24 PHP
php中的strpos使用示例
Feb 27 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
Dec 28 PHP
php自定义函数实现JS的escape的方法示例
Jul 07 PHP
全面解析PHP操作Memcache基本函数
Jul 14 PHP
浅谈PHP的反射机制
Dec 15 PHP
php实现文件管理与基础功能操作
Mar 21 PHP
360搜索引擎自动收录php改写方案
Apr 28 PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
laravel添加角色和模糊搜索功能的实现代码
一文搞懂php的垃圾回收机制
PHP中strval()函数实例用法
Jun 07 #PHP
使用php的mail()函数实现发送邮件功能
You might like
PHP控制网页过期时间的代码
2008/09/28 PHP
php 提速工具eAccelerator 配置参数详解
2010/05/16 PHP
php ios推送(代码)
2013/07/01 PHP
php加密解密函数authcode的用法详细解析
2013/10/28 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
php实现在站点里面添加邮件发送的功能
2020/04/28 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
JS中的Replace方法使用经验分享
2015/05/20 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
简单的三步vuex入门
2018/05/20 Javascript
vue底部加载更多的实例代码
2018/06/29 Javascript
在vue中解决提示警告 for循环报错的方法
2018/09/28 Javascript
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
Node对CommonJS的模块规范
2019/11/06 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
python sys模块sys.path使用方法示例
2013/12/04 Python
python和C语言混合编程实例
2014/06/04 Python
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
Python数据存储之 h5py详解
2019/12/26 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
如何实现jdbc性能优化
2012/07/30 面试题
上海期货面试题
2014/01/31 面试题
正风肃纪剖析材料
2014/02/18 职场文书
2014年商场工作总结
2014/11/22 职场文书
SQLServer2019 数据库环境搭建与使用的实现
2021/04/08 SQL Server