php阿里云OSS上传文件示例(附源码)

没什么好发的..发一下之前弄的php上传阿里云OSS例子吧!

源码写的比较简单,关键部分我也都加入了注释。感兴趣的朋友可以直接学习/参考

作用:

阿里云OSS上传例子,免去登录阿里云在上传OSS文件..当自己图床??Emm网站静态托管?….有能力的可以自己扩写扩写适合自己业务。

文件说明:

index.html(前端,用了一些bootstrap3元素)up.php、up2.php(后端API,PHP)。

图片[1]-php阿里云OSS上传文件示例(附源码)

当然如果你是作为自己的图床或静态托管.请务必别泄露自己的API(尽量为API增加限制比如时效性token或一次性token)避免被不怀好意的朋友盗用…设置流量告警 当然土豪请随意!

最后!代码放出(全文件前端后端打包也一并奉上)

PHP API 1(上传不修改源文件名版)

<?php
// * item: PHP 阿里云上传
// * By: Lucky
// * Blog: www.zai1.com
// * 一起学习一起进步!
require 'aliyun-oss-php-sdk/autoload.php'; // 阿里云SDK
use OSS\OssClient;
use OSS\Core\OssException;

// 阿里云OSS配置
$accessKeyId = 'LTAI5t9ACSTt8S3VcDveM5593';//如参数名
$accessKeySecret = 'NqbJQFTiG82PYDuZDv7lhpmE2eT3Y71';//如参数名
$endpoint = 'https://oss-cn-hangzhou.aliyuncs.com';//阿里云OSSendpoint 在OSS概览里可以看到 注意http和https 如果你是https 则需要填写https://oss-cn-你的OSS地域.aliyuncs.com
$bucket = 'jsyunduan';//上传到那个OSS空间

// 初始化OSS客户端
try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
} catch (OssException $e) {
    die('OSS初始化失败:' . $e->getMessage());
}

// 检查文件上传是否成功
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    $tmpName = $_FILES['file']['tmp_name'];
    $originalName = $_FILES['file']['name'];

    // 上传文件到OSS
    try {
        $ossClient->uploadFile($bucket, $originalName, $tmpName);
    } catch (OssException $e) {
        die('文件上传失败:' . $e->getMessage());
    }

    // 构建OSS文件访问链接
    $objectUrl = $ossClient->signUrl($bucket, $originalName, 3600);

    // 移除URL中的授权参数
    $objectUrl = preg_replace('/\?.*/', '', $objectUrl);//如果你上传后返回的URL携带参数可以去除,不去除:注释掉
    // 返回 JSON 响应
    $response = ['success' => true, 'link' => $objectUrl];//返回去除后的
} else {
    // 返回 JSON 响应
    $response = ['success' => false];
}

header('Content-Type: application/json');
echo json_encode($response);//返回给前端
?>

PHP API 2(上传后为文件更名为MD5)

image.png

修改为MD5版本可以防止文件名重复导致的覆盖

<?php
// * item: PHP 阿里云上传
// * By: Lucky
// * Blog: www.zai1.com
// * 一起学习一起进步!
require 'aliyun-oss-php-sdk/autoload.php'; // 阿里云SDK
use OSS\OssClient;
use OSS\Core\OssException;

// 阿里云OSS配置
$accessKeyId = 'LTAI5t9ACSTt8S3VcDveM5599'; // 如参数名
$accessKeySecret = 'NqbJQFTiG82PYDuZDv7lhpmE2eT3Yc6'; // 如参数名
$endpoint = 'https://oss-cn-hangzhou.aliyuncs.com'; // 阿里云OSS endpoint 同API 1 的解释、不多赘述。
$bucket = 'jsyunduan'; // 上传到哪个OSS空间

// 初始化OSS客户端
try {
    $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
} catch (OssException $e) {
    die('OSS初始化失败:' . $e->getMessage());
}

// 检查文件上传是否成功
if ($_FILES['file']['error'] === UPLOAD_ERR_OK) {
    $tmpName = $_FILES['file']['tmp_name'];

    // 生成新的文件名,使用文件内容的MD5值作为新文件名
    $newFileName = md5_file($tmpName); // 获取文件内容的MD5值
    $fileExtension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); // 获取文件扩展名
    $objectName = $newFileName . '.' . $fileExtension; // 拼接新文件名和文件扩展名

    // 上传文件到OSS并指定新文件名
    try {
        $ossClient->uploadFile($bucket, $objectName, $tmpName);
    } catch (OssException $e) {
        die('文件上传失败:' . $e->getMessage());
    }

    // 构建OSS文件访问链接
    $objectUrl = $ossClient->signUrl($bucket, $objectName, 3600);

    // 移除URL中的授权参数
    $objectUrl = preg_replace('/\?.*/', '', $objectUrl); // 如果你上传后返回的URL携带参数可以去除。

    // 返回 JSON 响应,包括新的文件名
    $response = ['success' => true, 'link' => $objectUrl, 'newFileName' => $objectName];
} else {
    // 返回 JSON 响应
    $response = ['success' => false];
}

// 返回给前端
header('Content-Type: application/json');
echo json_encode($response);
?>


关注公众号获取更多资讯~

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论区 共5条
头像
欢迎您留下宝贵的见解!我会第一时间处理!
提交
头像

昵称

取消
昵称表情图片
    • 头像ook0
    • 头像在意0