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中常用的预定义变量小结
May 09 PHP
php使用百度ping服务代码实例
Jun 19 PHP
php批量删除数据库下指定前缀的表以prefix_为例
Aug 24 PHP
PHP对文件进行加锁、解锁实例
Jan 23 PHP
PHP利用APC模块实现文件上传进度条的方法
Jan 26 PHP
win7安装php框架Yii的方法
Jan 25 PHP
解析PHP的Yii框架中cookie和session功能的相关操作
Mar 17 PHP
Laravel5中防止XSS跨站攻击的方法
Oct 10 PHP
EarthLiveSharp中cloudinary的CDN图片缓存自动清理python脚本
Apr 04 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
Jan 15 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
Apr 20 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
Oct 03 PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
laravel添加角色和模糊搜索功能的实现代码
一文搞懂php的垃圾回收机制
PHP中strval()函数实例用法
Jun 07 #PHP
使用php的mail()函数实现发送邮件功能
You might like
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
2019/04/02 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
jquery easyui 结合jsp简单展现table数据示例
2014/04/18 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
js实现的简单图片浮动效果完整实例
2016/05/10 Javascript
Vue框架之goods组件开发详解
2018/01/25 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
用vue写一个仿简书的轮播图的示例代码
2018/03/13 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
微信小程序实现上传多个文件 超过10个
2020/03/30 Javascript
vue通过过滤器实现数据格式化
2020/07/20 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
Python脚本实现代码行数统计代码分享
2015/03/10 Python
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
python daemon守护进程实现
2016/08/27 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
python查看模块,对象的函数方法
2018/10/16 Python
Python爬取成语接龙类网站
2018/10/19 Python
Django之全局使用request.user.username的实例详解
2020/05/14 Python
Django如何批量创建Model
2020/09/01 Python
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
党建工作目标管理责任书
2015/01/29 职场文书
限期整改通知书
2015/04/22 职场文书
超市主管竞聘书
2015/09/15 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis
vscode中使用npm安装babel的方法
2021/08/02 Javascript
Prometheus 监控MySQL使用grafana展示
2021/08/30 MySQL