没什么好发的..发一下之前弄的php上传阿里云OSS例子吧!
源码写的比较简单,关键部分我也都加入了注释。感兴趣的朋友可以直接学习/参考
作用:
阿里云OSS上传例子,免去登录阿里云在上传OSS文件..当自己图床??Emm网站静态托管?….有能力的可以自己扩写扩写适合自己业务。
文件说明:
index.html(前端,用了一些bootstrap3元素)up.php、up2.php(后端API,PHP)。
当然如果你是作为自己的图床或静态托管.请务必别泄露自己的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)
修改为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
- 最新
- 最热
只看作者