最近因为项目要用到七牛云,所以花了点时间整理了一下学习心得。

使用七牛云,第一步当然就是上传文件了,常见的云存储上传文件流程一般有3种:

用户==>业务服务器(你自己的服务器)==>云存储服务器

用户先把文件提交到你的服务器,然后你再转发给云存储,很明显,这样的方式相当于上传了2遍,势必会造成上传时间延长

用户==>七牛

用户直接把文件上传到七牛云,很明显,这种方式上传速度肯定比第一种快,今天我们主要学习这种上传方式

用户==>七牛==>业务服务器

如果设置了回调,七牛在上传完成后会将少量数据(如文件名)传给业务服务器

整个上传流程业务服务器颁发 上传凭证 给客户端

客户端通过 上传凭证,直接将文件上传到七牛云

七牛云返回上传结果

颁发上传凭证

因为用户要直接把文件上传到你的七牛云存储账户,所以一定要保证安全,否则别有用心的人利用你的七牛云存储他的文件,岂不是要浪费你的流量。

每个七牛用户会有accessKey和secretKey,我们利用七牛的SDK可以很容易的生成上传凭证token,我利用的是PHP版本的,框架用的YII框架。

$accessKey = '******';//换成你自己的

$secretKey = '******';//换成你自己的

$auth = new Auth($accessKey, $secretKey);

$bucket = 'test';// 要上传的七牛存储空间名称

$token= $auth->uploadToken($bucket);//将此token返回给你的用户

$this->_data['token']=$token;

return $this->render('up',$this->_data); //YII框架,将数据传给view

默认token有效期为3600秒,你也可以通过uploadToken()传递参数设置,具体参见SDK

客户端直接上传文件

客户端这边非常简单,通过form表单来上传数据,action不同的七牛云地区不一样,华南区,华北区等,不过不要担心,错误的时候会提示你正确地址是多少。设置一个隐藏字段name=token,值为上一步服务器返回的token

文件选择name设为file

上传之后会返回存储在七牛的文件名称,这样也说明上传成功了

">

上传

上传的更多设置

在第一步生成token的时候,七牛支持更多设置,比如,设置上传成功后返回的数据有哪些,上传成功后跳转的url地址,上传的文件名称等等$accessKey = '******';//换成你自己的

$secretKey = '******';//换成你自己的

$auth = new Auth($accessKey, $secretKey);

$bucket = 'test';// 要上传的七牛存储空间名称

//设置返回的数据内容

$returnBody=[

"key"=>"$(key)",   //$(key)是七牛提供的一些魔术变量

"imageInfo"=>"$(imageInfo.width)",

"bucket"=>"$(bucket)",

"myname"=>"liyulin"

];

$policy=[

"returnUrl"=>"http://baidu.com",//设置上传成功后的跳转地址

'saveKey'=>"$(fname)",

'returnBody'=>json_encode($returnBody),

];

$token= $auth->uploadToken($bucket,null,3600,$policy);

$this->_data['token']=$token;

return $this->render('up',$this->_data);

改为AJAX上传

我们一般上传图片,并不是通过提交整个form,而是先把图片通过ajax上传,然后获取图片的地址,并进行预览,因此将上面的form上传改为ajax上传

html代码:

">

上传

jquery代码:var domain="  //改为你的存储域名

$("#submit").on('click',function(){

var formdata=new FormData();

formdata.append('token',$("#token").val());

formdata.append('file',$("#file")[0].files[0]);

$.ajax({

type:'post',

url:'http://up-z0.qiniu.com',

data:formdata,

cache: false,

contentType:false,

processData: false,

dataType:"json",

error: function(request) {

alert(request.status);

},

success: function(data) {

$("#preview img").attr("src",domain+data.key);

}

});

});

七牛 savekey php,七牛云1:客户端直接上传文件相关推荐

  1. mac上传文件到七牛云,使用qshell上传文件到七牛云

    第一步:下载qshell(其实就是命令行,不是什么直接能打开的文件,也不是exe文件) 地址:https://developer.qiniu.com/kodo/tools/1302/qshell 选择 ...

  2. html5 如何实现客户端验证上传文件的大小

    在HTML 5中,现在可以在客户端进行文件上传时的校验了,比如用户选择文件后,可以 马上校验文件的大小和属性等.本文章向码农介绍html5 如何实现客户端验证上传文件的大小,感兴趣的码农可以参考一下. ...

  3. 如何上传html验证文件大小,html5 实现客户端验证上传文件的大小(简单实例)

    在HTML 5中,现在可以在客户端进行文件上传时的校验了,比如用户选择文件后,可以 马上校验文件的大小和属性等.本文章向码农介绍html5 如何实现客户端验证上传文件的大小,感兴趣的码农可以参考一下. ...

  4. php上传文件到七牛云源码,laravel上传文件到七牛云存储

    public function store(Request $request) { $file = $request->file('photo') ; if(!$file->isValid ...

  5. 七牛云图床php,PHP实现Markdown文章上传到七牛图床的实例内容

    在使用 Markdown 编写文章之后,经常需要发布到不同的平台,这里会遇到一个问题,文章的图片需要手动的进行上传,管理起来非常不方便,因此,强烈建议将图片统一上传到图床中,这样的话一篇文章就可以轻松 ...

  6. java上传视频到七牛云_使用SpringMVC上传视频到七牛云上

    最近做项目用到了七牛云存储,就讲一下如何使用springMVC对视频上传到七牛云上. Java SDK依赖的第三方库及其版本如下: 这个是使用maven管理的依赖. 也可以自己手动下载jar包通过这个 ...

  7. Go语言实战-通过gin上传文件到七牛云OSS

    上传到文件到七牛云的两种上传方式: 1. 客户端上传到服务器,服务器再上传到七牛云 2.客户端直接通过ajax上传到七牛云 前者:需要上传到服务器,这个过程需要消耗不少带宽,也给服务器带来不小压力,但 ...

  8. Python联调七牛云异步上传文件

    注:本篇文章参考文献 乾坤大挪移,如何将同步阻塞(sync)三方库包转换为异步非阻塞(async)模式?Python3.10实现.-刘悦. 首先需要拥有一个七牛云的账号 七牛云官网:七牛云 | 一站式 ...

  9. 云存储Java客户端上传文件

    什么是云存储 准确来说应该称为对象存储.云存储是比较流行的一种云服务,提供图片.视频等文件的存储服务.具有代表性的产品有:七牛云.阿里云对象存储OSS.又拍云.腾讯云对象存储服务COS. 云存储能做什 ...

最新文章

  1. 史上最伟大的五位计算机罪犯
  2. 【Java】练习题:蒙眼过马路
  3. 信噪比与误码率的计算
  4. Android开发七 Android中的显示单位
  5. Linux中Shell的命令替换用法笔记
  6. 基于事件驱动架构构建微服务第8部分:在应用程序上实现事件溯源
  7. 面试风云录(01) - 怎样回答这两个问题?
  8. C BackgroundWorker类详细说明
  9. 如何快速打好java基础_学习Java课程时如何才能打好基础呢?
  10. 从css3书写顺序引出来的border-radius参数
  11. 预处理: 主成分分析和白化
  12. linux 磁盘检测卡主_在Windows和Linux中找出磁盘分区使用的文件系统,就是这么简单...
  13. 小甲鱼python【easyGUI】学习笔记
  14. FPGA经典设计思想
  15. w7系统桌面没有计算机图标不见了,win7系统桌面图标不见了怎么办?
  16. html和js制作个人所得税表格,用JS编写个人所得税计算器
  17. Android日常整理(一)---android返回键、Fragment、android分割线、button图片间距的设置
  18. c++字符、字符串详解
  19. Apple ASA归因技术支持
  20. 考研路上的那些一战二战三战成功与失败的故事系列之十三

热门文章

  1. REMOTE HOST IDENTIFICATION HAS CHANGED问题解决
  2. 【英语六级笔记】翻译部分
  3. 2018最新Web前端经典面试题与答案
  4. 静态数组,全局数组,局部数组的初始化区别
  5. 如果写不好 SQL,有没有好用的报表软件?
  6. 【解决方法】Pymongo insert 卡住
  7. ios 页面即将消失_20个即将推出的页面介绍及如何正确处理它们
  8. 搭建个人网站没有公网IP地址可以吗?
  9. 微信小程序——订阅消息与微信公众号模板消息
  10. Unity 百度智能对话API