1.配置阿里云
(1)点击AccessKey,进入新的页面,建议使用子用户AccessKey,这样更安全
(2)创建用户
(3)为用户添加权限,也可以添加到相应的用户组
(4)获取到accessKeyId和accessKeySecret
2.代码部分
1.下载阿里云OSS php-sdk
github地址:https://github.com/aliyun/aliyun-oss-php-sdk?spm=a2c4g.11186623.2.4.24da46a1zUuFWV
2.将下载的文件放到php项目中
3.具体代码,写在2.php,源码如下:
<?php
/**
* 上传文件到阿里云
*/
require_once "aliyun/autoload.php";
use OSS\OssClient;
use OSS\Core\OssException;
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录https://ram.console.aliyun.com创建RAM账号。
$accessKeyId = "你的accessKeyId ";
$accessKeySecret = "你的accessKeySecret ";
// Endpoint以杭州为例,其它Region请按实际情况填写。
$endpoint = "你的endpoint ";
$bucket = "你的bucket ";
//对应阿里云中的目录,以年月日(例如:20210603)为目录名称
$object = date("Ymd")."/";
//本地的目录构建
$upload_path = "./upload/".date("Ymd")."/";
/**
*基本逻辑:首先将文件上传到自己的服务器中,接着将文件上传到阿里云OSS中,接着删除自己服务器中的文件
*/
if($_FILES["wenjian"]["error"] == 0){
if($_FILES["wenjian"]["tmp_name"]){
$file_name_arr = explode(".",$_FILES["wenjian"]["name"]);
$file_type = $file_name_arr[count($file_name_arr)-1];//获取文件类型
$file_name = md5($_FILES["wenjian"]["name"].time());
$file_total_name = $file_name.".".$file_type;
$status = move_uploaded_file($_FILES["wenjian"]["tmp_name"],$upload_path.$file_total_name);
try {
if($status){
//文件上传成功到服务器后再将文件上传到阿里云oss
$ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
$re = $ossClient->uploadFile($bucket, $object.$file_total_name, $upload_path.$file_total_name);
if($re["info"]["http_code"] == 200){
//上传阿里云成功之后删除自己服务器中
$local_file = $upload_path.$file_total_name;
if(file_exists($local_file)){
var_dump(unlink($local_file));
}
echo "文件上传成功!";
}
}
} catch (OssException $e) {
echo "发生错误:";
print $e->getMessage();
}
}
}
4.前端代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="2.php" method="post" enctype="multipart/form-data">
<input type="file" name="wenjian" />
<input type="submit" value="上传" />
</form>
</body>
</html>