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原创论坛
Oct 09 PHP
模拟OICQ的实现思路和核心程序(一)
Oct 09 PHP
php的大小写敏感问题整理
Dec 29 PHP
php中通过curl检测页面是否被百度收录
Sep 27 PHP
codeigniter教程之多文件上传使用示例
Feb 11 PHP
PHP实现的英文名字全拼随机排号脚本
Jul 04 PHP
php强制运行广告的方法
Dec 01 PHP
Yii框架获取当前controlle和action对应id的方法
Dec 03 PHP
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
Mar 02 PHP
CodeIgniter 完美解决URL含有中文字符串
May 13 PHP
php实现的简单中文验证码功能示例
Jan 03 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
PHP实现两种排课方式
Linux系统下安装PHP7.3版本
详细分析PHP7与PHP5区别
Jun 26 #PHP
laravel添加角色和模糊搜索功能的实现代码
一文搞懂php的垃圾回收机制
PHP中strval()函数实例用法
Jun 07 #PHP
使用php的mail()函数实现发送邮件功能
You might like
德生BCL3000的电路分析和打磨
2021/03/02 无线电
php对图像的各种处理函数代码小结
2013/07/08 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
js获取当前页面的url网址信息
2014/06/12 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
vuejs实现递归树型菜单组件
2018/01/13 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
JS多个表单数据提交下的serialize()应用实例分析
2019/08/27 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
在vue中使用jsx语法的使用方法
2019/09/30 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
python两种遍历字典(dict)的方法比较
2014/05/29 Python
python实现各进制转换的总结大全
2017/06/18 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
python机器人行走步数问题的解决
2018/01/29 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
python retrying模块的使用方法详解
2019/09/25 Python
Python json解析库jsonpath原理及使用示例
2020/11/25 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
详解pandas映射与数据转换
2021/01/22 Python
2014新年寄语
2014/01/20 职场文书
活动总结报告怎么写
2014/07/03 职场文书
刑事附带民事代理词
2015/05/25 职场文书
大学生支教感言
2015/08/01 职场文书
2016小学新学期寄语
2015/12/04 职场文书