七牛云(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));
}

作者 译文

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注