最近在用百度云的文件存储Bos 和百度云的加速CDN。

参考了一下官方的web直传实战,一共介绍了好几种方法,但是文档都过于朦胧了。自己就翻译了一下Php的Sdk 源码,整理了下一年百度云bos的最简单的直传方式。

我这里用到的开发软件环境如下:

1.ThinkPhp5.1版本的

2.webuploader上传插件

现在我们就一步一步实现,bos的最简单的直传方式。

一:设置Bos的跨域。

如下图,例如我们要用的的域名是“https://video.baidu.com”,那么我们就在这里添加规则,加入就可以了

二:Thinkphp5.1.23后端代码

1、配置config文件

我们在config里面新建一个文件,名称叫:sdk.php,然后填入自己的配置如下

2、生成签名和policy

我们在index模块的controller中,新建一个类叫Bce.php

/*** 百度云BCE操作* Class Bce* @package app\v1\controller*/
class Bce
{public function token(){//获取配置信息$bceConf = Config::get('sdk.bce');//生成当前时间戳$expiration = date("Y-m-d\TH:i:s\Z", time());//生成文件名称$fileName = 'video/' . time() .'_' . unique();//生成policy的配置$policyConf = ['expiration' => $expiration,'conditions' => [//要上传到的bucket['bucket' => $bceConf['video_bucket']],//要存为的文件名称['key' => $fileName]]];//将policy先json序列化后再base64$policy = base64_encode(json_encode($policyConf));//生成签名验证信息$signature = hash_hmac('sha256', $policy, $bceConf['sk']);//返回签名好的信息return array('accessKey' => $bceConf['ak'],'policy' => $policy,'signature' => $signature,'key' => $fileName);}
}

上面的代码就可以返回bos上传时候需要的签名了,接下来。我们来写前端的页面

三:前端页面直传

Html

html代码部分,可以参考webuploader官网案例

http://fex.baidu.com/webuploader/getting-started.html#%E5%9B%BE%E7%89%87%E4%B8%8A%E4%BC%A0

如下:

<div id="uploader-demo"><!--用来存放item--><div id="fileList" class="uploader-list"></div><div id="filePicker">选择图片</div>
</div>

Javascript

<script src="webuploader/webuploader.min.js"></script>
<script type="text/javascript">var tokenData;//获取签名的tokenfunction getToken() {$.ajax({url: "{:url('index/bce/token')}",dataType: "json",type: 'post',data: {},success: function (data) {if (data.code != 10000) {tokenData = data;console.log('---uploadBeforeSend has data----')}}});}getToken();// 初始化Web Uploadervar uploader = WebUploader.create({// 选完文件后,是否自动上传。auto: true,// swf文件路径swf: '__JS__/webuploader/Uploader.swf',// 文件接收服务端,设置成自己的bucket域名。server: 'https://*.gz.bcebos.com',// 选择文件的按钮。可选。// 内部根据当前运行是创建,可能是input元素,也可能是flash.pick: '#filePicker',// 只允许选择视频文件。accept: {title: 'Videos',extensions: 'mp4,avi,mov,mkv',mimeTypes: 'video/*'},//只允许单个上传fileNumLimit: 1,//最大100MfileSingleSizeLimit: 100 * 1024 * 1024,// 不压缩!resize: false});uploader.on("uploadStart", function (file) {//如果没有获取到签名,说明没有登录上去,跳转到自己的登录页面if (tokenData == undefined) {window.location.href = "{:url('index/user/login')}"}uploader.options.formData = tokenData});// 文件上传过程中创建进度条实时显示。uploader.on('uploadProgress', function (file, percentage) {});// 文件上传成功,给item添加成功class, 用样式标记上传成功。uploader.on('uploadSuccess', function (file, ret) {console.log(ret)});//不管成功或者失败,文件上传完成时触发uploader.on('uploadComplete', function (file) {uploader.reset();})// 文件上传失败,显示上传出错。uploader.on('uploadError', function (file, ret) {alert('文件上传失败,请稍后重试');});/*** 验证文件格式以及文件大小*/uploader.on("error", function (type) {if (type == "Q_TYPE_DENIED") {return alert("请上传mp4、avi、mov、mkv的文件")} else if (type == "F_EXCEED_SIZE") {return alert("文件大小不能超过100M")}});</script>

这样,就可以实现了webuploader插件,直接上传到百度云了。

更多的功能如,断点续传、分片上传,留给大家自己去研究了。

webuploader直接上传文件到百度云BOS中相关推荐

  1. linux上传文件至 百度云

    pip install requests pip install bypy bypy info bypy info 后 终端显示如下: Please visit: https://openapi.ba ...

  2. 使用bypy从ubuntu通过命令行上传文件到百度云

    从新加坡的ubuntu服务器上打包了1个多G的zip,下载到国内82多K每秒,吓死了.然后想到能不能从服务器上传到百度云,再从百度云上下载. 得到大神指点,知道了bypy这个Python包. 首先安装 ...

  3. ubuntu16.04 通过bypy上传文件到百度云

    pip install bypy --user bypy info 访问链接:https://openapi.baidu.com/oauth/2.0/authorize?client_id=q8WE4 ...

  4. python 百度云api_Python使用百度API上传文件到百度网盘代码分享

    # coding:UTF-8 import urllib import urllib2 __author__ = 'Administrator' from poster.encode import m ...

  5. mac SCp上传文件到阿里云服务器centos

    1.mac链接远程阿里云服务器centos命令: ssh -A -p 22 root@ip 2.mac上传文件到阿里云centos: 3.阿里云服务器weapps下文件删除命令: 4.上传文件相关 m ...

  6. java 上传文件到服务器_java上传文件到OSS云服务器(二)

    上篇文章中已经把接口端和service业务层写了,这次就把OSS上传文件的工具类补上. 一.首先配置好OSS服务器各项节点,这是在springboot中appliaction.yml配置文件中的写法. ...

  7. 微信小程序直接上传文件到阿里云OSS组件封装

    微信小程序直接上传文件到OSS 1. 封装公共方法 在根目录utils目录新建一个upload文件夹: // utils/upload/base64.jsvar base64EncodeChars = ...

  8. java上传文件至阿里云oss工具类

    第一步:引入oss maven坐标 <dependency><groupId>com.aliyun.oss</groupId><artifactId>a ...

  9. 上传文件到阿里云linux服务器

    上传文件到阿里云linux服务器 安装Putty软件(用来连接阿里云服务器的一款软件,里面有用来上传文件到服务器的可执行文件) 参考以下网址: https://help.aliyun.com/docu ...

  10. Android(安卓)上传文件到阿里云点播,阿里云点播转码

    Android(安卓)上传文件到阿里云点播,阿里云点播转码 文章目录 Android(安卓)上传文件到阿里云点播,阿里云点播转码 一:登录阿里云点播平台配置添加转码模板组 1:需要什么参数,可自行填写 ...

最新文章

  1. 集合php,PHP问题集合
  2. mysql场景测试_【干货】不同场景下 如何进行MySQL迁移
  3. 搜索(DFS)---好友关系的连通分量数目
  4. 2/19 福建四校联考
  5. vray阴天室内_阴天有话:第1部分
  6. nodejs生成动态网页
  7. Java多线程学习总结(3)——Java线程的6种状态及切换
  8. lucene 增量 全量 更新索引_搜索引擎:该如何设计你的倒排索引?
  9. 2006毕业设计Delphi篇(二)
  10. POJ2104 K-th Number (平方分割 + 二分)
  11. 7-2 换硬币 (20 分)
  12. 21.卷1(套接字联网API)---多播
  13. 想知道CSDN积分怎么获取谢谢啦 需要下载文件
  14. 用计算机打爸爸妈妈,看图写话打电脑
  15. 基于CarSystemUI实现左侧导航栏NavigationBar及下拉面板定制开发1——Android10智能座舱
  16. 模仿微信更改头像,图片局部放大
  17. 开源者的自我修养|为 ShardingSphere 贡献了千万行代码的程序员,后来当了 CEO...
  18. UDT 最新源码分析(三) -- UDT Socket 相关函数
  19. linux中的快捷键大全
  20. Steam游戏的爬取与分析

热门文章

  1. 微信开发工具ts和js文件冲突
  2. vue3 effect 实现思路
  3. Linux网卡up但是没有running,eth0 up但是没有running的小问题
  4. STM32:使用外部中断控制对射式红外传感器并计次
  5. 口算训练java_java口算器
  6. C语言复习 随手写3
  7. 新增收货地址管理 html,关于“收货地址”的二三事
  8. 计算机英语派生词和复合词,英语派生词归纳
  9. notepad++ paste data vertically
  10. 最大公约数简便算法_最大公约数算法