七牛云(oss)实现 图片上传接口。
首先登录注册 七牛云 每个月免费 10G 空间。
代码部分 PHP实现 图床上传接口 , 前端 可以ajax 发送 formData。
前端代码(实现 图片 formdata上传):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<input type="file" id="photo" value="" placeholder="免冠照片">
<input type="text" id="username" />
<input type="button" id="button" value="上传图片" name="" style="width:100px;height:30px;">
<div id="content" onclick="upload()"> 上传 </div>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script>
function upload() {
var myFile = new FormData();
//添加 file
myFile.append('photo',$('#photo')[0].files[0]);
axios({
method: 'post',
url: "http://127.0.0.1:80/index.php",
data: myFile
}).then ( r => {
console.log(r.data)
})
}
</script>
</body>
</html>
php代码 (实现图片上传至七牛云):
首先 php需要下载 官方sdk 引入到项目中(直接复制粘贴到项目下 即可)。下载地址 : https://github.com/qiniu/php-sdk/releases
下载完成之后 引入项目 require ‘php-sdk-7.5.0/autoload.php’; (引入 下载的 autoload .php 请注意地址)
分别引入 鉴权类( use Qiniu\Auth; ) 上传类 ( use Qiniu\Storage\UploadManager; ) 分别用于 用户信息识别 和 上传方法
接收 前端 formdata。$_FILES[‘formdata 引入的file 名称 (前端)’]
上传 返回 域名 + 文件名
<?php
// 引入 sdk
require 'php-sdk-7.5.0/autoload.php';
// 引入鉴权类
use Qiniu\Auth;
// 引入上传类
use Qiniu\Storage\UploadManager;
// 获取上传文件对应的字典(对象)
header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods:*');
header('Access-Control-Allow-Headers:*');
header("Access-Control-Request-Headers: *");
// 接收 前端发送的图片 并获取 地址
$tmpname = $_FILES['photo']['tmp_name'];
$fileName = $_FILES['photo']['name'];//文件名称
$res = empty($tmpname);
// 判断是否为空
if($res){
$errorArr = array('code' => 100,'msg' => "error 请上传formData 名 photo");
//返回json
exit(json_encode($errorArr));
}else{
// 存储 桶的名称
$bucket = '你自己 注册账号的存储桶名称';
// 用于签名的公钥和私钥
$accessKey = '开发者的ak 查看地址 : https://portal.qiniu.com/user/key';
$secretKey = '开发者的sk 查看地址 : https://portal.qiniu.com/user/key';
// 初始化签权对象
$auth = new Auth($accessKey, $secretKey);
// 生成上传Token
$token = $auth->uploadToken($bucket);
// echo $token;
// 构建 UploadManager 对象
$uploadMgr = new UploadManager();
// tonken 秘钥 key 文件名 filepath 文件本地地址
$upFileName = time() . $fileName;
// 上传
list($ret, $err) = $uploadMgr->putFile($token,$upFileName,$tmpname);
$returnSrc = '七牛云 绑定的域名' . $upFileName;
$successArr = array('code' => 200 , 'msg' => 'success' , "src" => $returnSrc);
exit(json_encode($successArr));
}