php上传文件到阿里云OSS

1.配置阿里云

php上传文件到阿里云OSS_第1张图片
(1)点击AccessKey,进入新的页面,建议使用子用户AccessKey,这样更安全
php上传文件到阿里云OSS_第2张图片
(2)创建用户
php上传文件到阿里云OSS_第3张图片
(3)为用户添加权限,也可以添加到相应的用户组
php上传文件到阿里云OSS_第4张图片
(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项目中

php上传文件到阿里云OSS_第5张图片

3.具体代码,写在2.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>Documenttitle>
head>
<body>
    <form action="2.php" method="post" enctype="multipart/form-data">
        <input type="file" name="wenjian" />
        <input type="submit" value="上传" />
    form>
body>
html>

你可能感兴趣的:(php,阿里云)