七牛php-sdk使用-文件上传
使用七牛进行文件上传可以有多种方式:
- 直接form表单上传,需要自己按照文档做配置
- 使用七牛jssdk,部署较简单,大文件分片上传
- php-sdk后台上传
首先,所有的上传方法以及所有的跟七牛接口相关的操作,基本都离不开token
,所以首先必须先获取token。
下载七牛的php-sdk, 放到项目目录,有一点提一下,七牛的php-sdk并没有加入命名空间,所以要应用到自己的框架中,需要更添加一下命名空间。
然后,需要获取token需要先获取auth:
note:accessKey与secretKey需要自己注册并在七牛开发者中心获取
public function getAuth()
{
$model = new \backend\models\QiniuKey();
$key = $model->getKey();
$accessKey = $key['accessKey'];
$secretKey = $key['secretKey'];
//安全起见,accessKey 与 secretKey 存放数据库
$auth = new Auth($accessKey, $secretKey);
return $auth;
}
然后获取上传的uploadToken:
public function getUptoken($bucketName)
{
header('Access-Control-Allow-Origin:*');
$bucket = $bucketName; //七牛bucketname
$auth = $this->getAuth();
$upToken = $auth->uploadToken($bucket);
return $upToken;
}
如果以form表单的方式上传,只要action指定为http://upload.qiniu.com/
,以及包含name为token的input 表单,对于资源文件的别名,可以在调用uploadToken的时候,指定第二参数key;以及上传的结果,可以指定第三个参数policy中,也就是上传策略中指定callbackUrl,上传成功,七牛会请求指定的回调地址,返回信息包括code与hash就是上传文件的文件名(你指定的key或者七牛生成的唯一的hash值)。
使用php-sdk上传
这种上传方式,适用于图片已经上传到了我们的服务器的情况,因为上传需要指定文件的路径。一般情况,key值会指定为时间戳加4位随机数的形式来命名。
需要用到sdk中的UploadManager这个类
/**
* 本地文件上传七牛 wyq add type 方便直接打开文件
* @param $filePath 本地文件的路径(真实的物理路径)
*/
public function uploadToQiniu($filePath,$type="")
{
/* @param $upToken 上传凭证
* @param $key 上传文件名
* @param $filePath 上传文件的路径
* @param $params 自定义变量,规格参考
* http://developer.qiniu.com/docs/v6/api/overview/up/response/vars.html#xvar
* @param $mime 上传数据的mimeType
* @param $checkCrc 是否校验crc32
*/
$uploadManager = new UploadManager;
$upToken = $this->getUptoken($bucketName);
if(empty($type)){
$key = time().rand(1000,9999);
}else{
$key = time().rand(1000,9999).".".$type;
}
$mimeType = $this->getMimeType($filePath);
$res = $uploadManager->putFile($upToken,$key,$filePath,null,$mimeType);
if($res[0] != null){
$url = 'http://'.$this->qiniu_image_domain.'/'.$key;//七牛文件的链接(前提是公开bucket)
return $url;
}else{
return false;
}
}
获取文件minetype的代码也放上来:
/**
* 获取一个文件mime-Type
* @param $filePath 文件路径
*/
public function getMimeType($filePath)
{
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $filePath);
finfo_close($finfo);
return $mime;
}
上传成功就可以将返回的url进行保存或者显示了。如果返回的false,,就需要debug一下,查看$res的错误信息。
使用js-sdk上传
有了jssdk就没必要再使用第一种表单的上传方式了。首先下载jssdk
然后将资源文件放到我们的js资源目录下,先进行css与js文件的引入。因为这个上传组件是基于plupload做的,所以要引入的文件包括:
main.css
highlight.css
//plupload需要的js
plupload.full.min.js
ui.js
//sdk
qiniu.js
//多文件上传
multiple.js
//单文件上传
main.js
引入完之后,需要做的一点配置就是,打开main.js,有一个uptoken_url项,也就是如同上面的方式一样,上传需要使用uploadToken,所以我们在这里指定一个url地址,sdk会自动请求这个地址,我们在这个地址中做的操作就是返回token,echo json_encode(['uptoken' => 'token字符串'])
;
如果要自定义样式,以及上传文件过程的效果,需要阅读源码来更改,这个sdk没有提供样式以及状态修改的选项。
另外的一种上传方式,之前有介绍过,就是基于uploadify(也是一个上传文件用的js插件)与七牛的结合使用,可以点击前往查看。
更多用法,欢迎留言讨论。
七牛php-sdk使用-文件上传的更多相关文章
- Ceph RGW服务 使用s3 java sdk 分片文件上传API 报‘SignatureDoesNotMatch’ 异常的定位及规避方案
import java.io.File; import com.amazonaws.AmazonClientException; import com.amazonaws.auth.profile ...
- 性能测试七:jmeter进阶之文件上传下载、定时器
一.上传下载 上传: 1,POST请求,勾选 use …for post 2,同请求一起发送文件里,填写文件名称,参数名称 3,MIME类型: application/octet-stream(非必须 ...
- 七牛云存储Python SDK使用教程 - 上传策略详解
文 七牛云存储Python SDK使用教程 - 上传策略详解 七牛云存储 python-sdk 七牛云存储教程 jemygraw 2015年01月04日发布 推荐 1 推荐 收藏 2 收藏,2.7k ...
- Java进阶学习:将文件上传到七牛云中
Java进阶学习:将文件上传到七牛云中 通过本文,我们将讲述如何利用七牛云官方SDK,将我们的本地文件传输到其存储空间中去. JavaSDK:https://developer.qiniu.com/k ...
- .Net Core实现将文件上传到七牛云存储
功能:将图片上传到七牛云存储 准备工作 注册七牛账号,提交实名认证(基本上1天内内审核通过) 登录七牛后台->对象存储->新建空间 (基本概念:https://developer.qini ...
- 七牛云存储的 Javascript Web 前端文件上传
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,七牛云存储的 Web 前端文件上传 七牛是不错的云存储产品,特别是有免费的配额可 ...
- 七牛云存储 qiniu 域名 回收 文件上传 备份 下载 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Node开发文件上传系统及向七牛云存储和亚马逊AWS S3的文件上传
背景起,有奏乐: 有伟人曰:学习技能的最好途径莫过于理论与实践相结合. 初学Node这货时,每每读教程必会Fall asleep. 当真要开发系统时,顿觉精神百倍,即便踩坑无数也不失斗志. 因为同团队 ...
- laravel中的文件上传到本地+七牛云上传
首先在filesystems.php 配置好上传的文件的目录起名为upload 在Storage/目录下面 目录下面的app/upload 如果没有这个文件会自动创建 这里的名字upload名字是跟控 ...
随机推荐
- gradle发布jar包
在.gradle文件中添加以下代码 apply plugin: 'application' mainClassName = 'com.excel.ExcelApplication' jar { doF ...
- Android查缺补漏(View篇)--自定义 View 的基本流程
View是Android很重要的一部分,常用的View有Button.TextView.EditView.ListView.GridView.各种layout等等,开发者通过对这些View的各种组合以 ...
- 【java】Date与String之间的转换及Calendar类:java.text.SimpleDateFormat、public Date parse(String source) throws ParseException和public final String format(Date date)
package 日期日历类; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util. ...
- Python 爬虫实战(一):使用 requests 和 BeautifulSoup
Python 基础 我之前写的<Python 3 极简教程.pdf>,适合有点编程基础的快速入门,通过该系列文章学习,能够独立完成接口的编写,写写小东西没问题. requests requ ...
- iOS UI特效
1.iOS特效 a.对应APP中的基本动作分三类: 1.指向性动效(滑动,弹出等) 2.提示性动效(滑动删除,下拉刷新等) 3.空间扩展(翻动,放大等) b.这类动效在设计过程中需要主意几点: 1.系 ...
- Java SE 8 流库(四)
1.8. 收集数据 <R,A> R collect(Collector<? super T,A,R> collector) 使用给定的收集器来收集当前流中的元素 void ...
- NP完整性| 集1(简介)
我们一直在写关于高效算法来解决复杂问题,如最短路径,欧拉图,最小生成树等.这些都是算法设计者的成功故事. 在这篇文章中,讨论了计算机科学的失败故事. 计算机可以解决所有的计算问题吗? 存在计算问题,即 ...
- HTML5 给图形绘制阴影(绘制五角星示例)
几个属性 shadowOffsetX:阴影的横向位移量. shadowOffsetY:阴影的纵向位移量. shadowColor:阴影的颜色. shadowBlur:阴影的模糊范围. 属性说明 sha ...
- 设计模式之 - 模板模式(Template Pattern)
引入:这几天在看一本讲spring源码的书<SPRING技术内幕>里面在讲加载配置文件的时候,可以有不同的加载方式,如根据文件系统目录加载配置文件(FileSystemXmlApplica ...
- Java集合(一) CopyOnWriteArrayList
CopyOnWriteArrayList 类分析 1. CopyOnWriteArrayList 其中底层实现存放数据是一个Object数组: private volatile transie ...