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快速url重写 更新版[需php 5.30以上]
Apr 20 PHP
解析smarty模板中类似for的功能实现
Jun 18 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
Aug 16 PHP
新手菜鸟必读:session与cookie的区别
Aug 22 PHP
PHP图片等比例缩放生成缩略图函数分享
Jun 10 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
php控制文件下载速度的方法
Mar 24 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
Dec 07 PHP
PHP Header用于页面跳转时的几个注意事项
Oct 21 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 PHP
Centos7安装swoole扩展操作示例
Mar 26 PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
laravel添加角色和模糊搜索功能的实现代码
一文搞懂php的垃圾回收机制
PHP中strval()函数实例用法
Jun 07 #PHP
使用php的mail()函数实现发送邮件功能
You might like
php绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
php下将多个数组合并成一个数组的方法与实例代码
2011/02/03 PHP
Windows和Linux中php代码调试工具Xdebug的安装与配置详解
2014/05/08 PHP
PHP最常用的正则表达式
2017/02/13 PHP
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
js实现Form栏显示全格式时间时钟效果代码
2015/08/19 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
轮播的简单实现方法
2016/07/28 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
iscroll动态加载数据完美解决方法
2017/07/18 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
2019/09/10 Javascript
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
10款最好的Python开发编辑器
2019/07/03 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
日本小田急百货官网:Odakyu
2018/07/19 全球购物
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
护士岗位职责
2014/02/16 职场文书
村班子对照检查材料
2014/08/18 职场文书
校园安全广播稿范文
2014/09/25 职场文书
学习群众路线的心得体会
2014/11/05 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
预备党员半年考察意见
2015/06/01 职场文书
格列佛游记读书笔记
2015/06/30 职场文书
党务工作者主要事迹材料
2015/11/03 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS