TP5.1上传图片至七牛云
1. 百度七牛云官网,点击进入,点击免费注册
2. 填写信息注册完成后,选择侧边栏的对象存储服务
3. 点击空间管理,新建空间
4.填写名称、选择区域、选择访问控制
这个存储空间用来存放我们上传的图片,七牛云会免费提供给我们一个月的cdn测试域名,当然我们也可以将测试域名更改为我们自己的域名
5. 存储空间我们已经创建完成了,接下来我们要在tp5.1项目中引入七牛云的sdk,点击文档、开发者中心、官网sdk、php、选择文档我们会看到下图
七牛云提供给我们三种安装的方式,我常用composer进行安装
6. 打开控制台,进入项目目录,复制粘贴命令,回车
php composer.phar require qiniu/php-sdk
下载安装完毕后,会在vendor目录下生成七牛的sdk文件
7. 在前端页面添加form表单、更改action地址
<form method="post" action="/imageUpload" enctype="multipart/form-data">
<input name="token" type="hidden" value="<upload_token>">
<input name="file" type="file" />
<input type="submit" value="上传"/>
</form>
8. 后台控制器添加以下代码,use一下七牛的sdk
use Qiniu\Auth;
use Qiniu\Storage\UploadManager;
public function imageUpload()
{
//上传的图片文件
$file = request()->file('file');
//获取上传文件名称
$file_name = $_FILES['file']['name'];
//获取文件大小
$file_size = $_FILES['file']['size'];
//获取图片后缀名称
$suffix = explode('.', $file_name);
//检查图片格式是否正确
$type = ['JPG', 'PNG', 'GIF','jpg','png','gif'];
if (!in_array($suffix[1], $type)) {
return '格式错误! </br> 图片类型只支持PNG、JPG、GIF';
}
//检查图片大小
$size = (($file_size / 1024) / 1024) * 1000;
if ($size > 2048) {
return '图片大小超过2M!';
}
//设置图片存储路径
$dir = 'image';
$image = "image/$file_name";
if (file_exists($image)) {
return '图片已存在';
}
$info = $file->move($dir, '');
if (!$info) {
return '上传到本地失败!';
}
$accessKey = ‘七牛个人中心的accesskey ’;
$secretKey = ‘七牛个人中心的secretKey ’;
//构建鉴权对象
$auth= new Auth($accessKey,$secretKey);
//在七牛的存储空间
$bucket='在七牛创建的空间名称'
$token = $auth->uploadToken($bucket);
//获取当前项目路径
$real_path = getcwd();
//图片存储路径
$real_path .= '/image/' . "$file_name ";
// 上传到七牛后保存的文件名
$date = time();
$key = $date;
// 初始化 UploadManager 对象并进行文件的上传。
$uploadMgr = new UploadManager();
// 调用 UploadManager 的 putFile 方法进行文件的上传。
list($res, $err) = $uploadMgr->putFile($token, $key, $real_path);
//删除项目存储的本地图片
$path = $info ->getRealPath();
if (file_exists($path)) {
unset($iconMsg);
unlink($path); //删除文件
}
if ($err !== null) {
return array(
'code' => 0,
'data' => '图片上传七牛云失败'
);
} else {
return array(
'code' => 1,
'data' => '存储空间的cdn域名地址' . $res['key'],
);
}
秘钥在个人中心的秘钥管理模块