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 相关文章推荐
JS与PHP向函数传递可变参数的区别实例代码
May 18 PHP
PHP URL路由类实例
Nov 12 PHP
PHP程序漏洞产生的原因分析与防范方法说明
Mar 06 PHP
php模拟用户自动在qq空间发表文章的方法
Jan 07 PHP
PHP实用函数分享之去除多余的0
Feb 06 PHP
php使用mysqli向数据库添加数据的方法
Mar 20 PHP
微信公众平台开发实现2048游戏的方法
Apr 15 PHP
使用PHP编写发红包程序
Jul 22 PHP
PHP中error_reporting()用法详解
Aug 31 PHP
php二维码生成
Oct 19 PHP
PHP框架自动加载类文件原理详解
Jun 06 PHP
thinkphp3.2同时连接两个数据库的简单方法
Aug 13 PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
laravel添加角色和模糊搜索功能的实现代码
一文搞懂php的垃圾回收机制
PHP中strval()函数实例用法
Jun 07 #PHP
使用php的mail()函数实现发送邮件功能
You might like
玩转虚拟域名◎+ .
2006/10/09 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
使用图灵api创建微信聊天机器人
2015/07/23 PHP
php编程每天必学之表单验证
2016/03/01 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
javascript options属性集合操作代码
2009/12/28 Javascript
jquery常用技巧及常用方法列表集合
2011/04/06 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
jquery实现兼容IE8的异步上传文件
2015/06/15 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
2015/09/09 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
[36:16]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.19
2020/12/24 DOTA
jupyter安装小结
2016/03/13 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
Python字典底层实现原理详解
2019/12/18 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
django实现后台显示媒体文件
2020/04/07 Python
Python使用re模块验证危险字符
2020/05/21 Python
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
保加利亚运动鞋购物网站:SneakerStudio.bg
2020/12/23 全球购物
Linux文件系统类型
2012/02/15 面试题
应届生会计电算化求职信
2013/10/03 职场文书
20岁生日感言
2014/01/13 职场文书
安全生产目标责任书
2014/04/14 职场文书
明星员工获奖感言
2014/08/14 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
小学语文新课改心得体会
2016/01/22 职场文书
高一英语教学反思
2016/03/03 职场文书
导游词之西递宏村
2019/12/10 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL