php上传文件到阿里云OSS

1.配置阿里云

截图
(1)点击AccessKey,进入新的页面,建议使用子用户AccessKey,这样更安全
image.png
(2)创建用户
image.png
(3)为用户添加权限,也可以添加到相应的用户组
image.png
(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项目中

image.png

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>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值