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程序员编程注意事项
Apr 10 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
将二维数组转为一维数组的2种方法
May 26 PHP
php模拟服务器实现autoindex效果的方法
Mar 10 PHP
Yii中的cookie的发送和读取
Jul 27 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
Oct 28 PHP
YII框架批量插入数据的方法
Mar 18 PHP
php出租房数据管理及搜索页面
May 23 PHP
Bootstrap+PHP实现多图上传功能实例详解
Apr 08 PHP
PHP实现链表的定义与反转功能示例
Jun 09 PHP
php-fpm超时时间设置request_terminate_timeout资源问题分析
Sep 27 PHP
解决laravel(5.5)访问public报错的问题
Oct 12 PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
laravel添加角色和模糊搜索功能的实现代码
一文搞懂php的垃圾回收机制
PHP中strval()函数实例用法
Jun 07 #PHP
使用php的mail()函数实现发送邮件功能
You might like
php自动获取目录下的模板的代码
2010/08/08 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
JXTree对象,读取外部xml文件数据,生成树的函数
2007/04/02 Javascript
用JavaScript调用WebService的示例
2008/04/07 Javascript
javascript Keycode对照表
2009/10/24 Javascript
javascript深入理解js闭包
2010/07/03 Javascript
模仿百度三维地图的js数据分享
2011/05/12 Javascript
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
js原生日历的实例(推荐)
2017/10/31 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
从零到一详聊创建Vue工程及遇到的常见问题
2019/04/25 Javascript
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
在python中实现强制关闭线程的示例
2019/01/22 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
python实现大量图片重命名
2020/03/23 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
给分销商的致歉信
2014/01/14 职场文书
简单的辞职信模板
2015/05/12 职场文书
同意转租证明
2015/06/24 职场文书
感恩教师主题班会
2015/08/12 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
python 常用的异步框架汇总整理
2021/06/18 Python
MySQL Innodb索引机制详细介绍
2021/11/23 MySQL
MySQL 字符集 character
2022/05/04 MySQL