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项目打包方法
Feb 18 PHP
用PHP进行MySQL删除记录操作代码
Jun 07 PHP
洪恩在线成语词典小偷程序php版
Apr 20 PHP
解析MySql与Java的时间类型
Jun 22 PHP
php inc文件使用的风险和注意事项
Nov 12 PHP
PHP定时更新程序设计思路分享
Jun 10 PHP
php查找字符串出现次数的方法
Dec 01 PHP
PHP 验证登陆类分享
Mar 13 PHP
PHP编写RESTful接口
Feb 23 PHP
PHP实现文件上传下载实例
Oct 18 PHP
yii2多图上传组件的使用教程
May 10 PHP
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
Apr 16 PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
laravel添加角色和模糊搜索功能的实现代码
一文搞懂php的垃圾回收机制
PHP中strval()函数实例用法
Jun 07 #PHP
使用php的mail()函数实现发送邮件功能
You might like
php 方便水印和缩略图的图形类
2009/05/21 PHP
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
php中引用符号(&amp;)的使用详细介绍
2016/12/06 PHP
Laravel 5.5 异常处理 &amp; 错误日志的解决
2019/10/17 PHP
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
Firefox div高度自适应
2009/04/28 Javascript
超级24小时弹窗代码 24小时退出弹窗代码 100%弹窗代码(IE only)
2010/06/11 Javascript
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)
2015/08/26 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
js实现tab选项卡切换功能
2017/01/13 Javascript
bootstrap日期控件问题(双日期、清空等问题解决)
2017/04/19 Javascript
基于Vue-Cli 打包自动生成/抽离相关配置文件的实现方法
2018/12/09 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
python字典排序实例详解
2015/05/20 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
Python PyQt5整理介绍
2020/04/01 Python
python程序输出无内容的解决方式
2020/04/09 Python
python 5个顶级异步框架推荐
2020/09/09 Python
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
销售代表求职自荐信
2013/10/01 职场文书
外贸业务员岗位职责
2013/11/24 职场文书
同学聚会主持词
2014/03/18 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
军人离婚协议书样本
2014/10/21 职场文书
开票员岗位职责
2015/02/12 职场文书
学前班教学反思
2016/02/24 职场文书
授权协议书范本(3篇)
2019/10/15 职场文书
Python中异常处理用法
2021/11/27 Python
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL