apicloud apicloud

注册
查看: 897|回复: 2

[模块教程] baiduBos模块demo示例

版主

UID:83211

主题:
169
帖子:
9259
云币:
2014

APICloud粉丝模块开发者一周年你吃屎!女朋友SB侠APICloud大会专属勋章捣蛋鬼

[模块教程] baiduBos模块demo示例

897 2 | 发表于 2019-6-18 11:27:18 |阅读模式 | |
本模块封装了百度对象存储BOS的原生SDK,支持大文件断点续传

点击进入模块详情

  1. <!DOCTYPE html>
  2. <html>
  3.         <head>
  4.                 <title>Module Develop</title>
  5.                 <meta charset="utf-8">
  6.                 <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
  7.                 <style type="text/css">
  8.                         html, body {
  9.                                 height: 100%
  10.                         }
  11.                         body {
  12.                                 background-color: #fff;
  13.                                 margin: 0;
  14.                         }
  15.                         #wrap {
  16.                                 height: 100%;
  17.                                 position: relative;
  18.                         }
  19.                         #header {
  20.                                 padding-top: 20px;
  21.                                 background-color: #5082c2;
  22.                                 height: 44px;
  23.                                 position: relative;
  24.                         }
  25.                         #header h1 {
  26.                                 font-size: 20px;
  27.                                 height: 44px;
  28.                                 line-height: 44px;
  29.                                 margin: 0em;
  30.                                 color: #fff;
  31.                                 margin-left: 100px;
  32.                                 margin-right: 100px;
  33.                                 text-align: center;
  34.                         }
  35.                         #main {
  36.                                 display: -webkit-box;
  37.                                 -webkit-box-orient: vertical;
  38.                                 -webkit-box-pack: center;
  39.                         }
  40.                         a.button {
  41.                                 display: -webkit-box;
  42.                                 -webkit-box-orient: vertical;
  43.                                 -webkit-box-pack: center;
  44.                                 -webkit-box-align: center;
  45.                                 height: 32px;
  46.                                 margin: 8px;
  47.                                 background-color: rgba(240,240,240,1.0);
  48.                                 border-color: rgba(220,220,220,1.0);
  49.                                 border-width: 2px;
  50.                                 border-style: solid;
  51.                         }
  52.                         a.active {
  53.                                 background-color: rgba(240,240,240,0.7);
  54.                         }
  55.                 </style>
  56.         </head>
  57.         <body>
  58.                 <div id="wrap">
  59.                         <div id="main">
  60.                                 <a class="button" tapmode="active" onclick="selectFile()" >选择上传文件</a>
  61.                                 <a class="button" tapmode="active" onclick="uploadPart_q()" >上传分块</a>
  62.                                 <a class="button" tapmode="active" onclick="listParts_q()" >获取所有已上传的分块信息</a>
  63.                 <a class="button" tapmode="active" onclick="abortMultipartUpload_q()" >取消分块上传</a>
  64.                                 <a class="button" tapmode="active" onclick="deleteObject_q()" >删除文件</a>
  65.                         </div>
  66.                 </div>
  67.         </body>
  68.         <script type="text/javascript">
  69.                 var demo = null;
  70.                 var mAccessKey  = "AC7ceab0f92375d1a19dcc653c1a7ba0";
  71.                 var mSecretAccessKey = "F71a959bba3ac38dfca74c796341f440";
  72.                 var mBucketName = "zhaofeitest";
  73.                 var mEndpointBos = 'https://bj.bcebos.com';
  74.                 var mUploadId;
  75.                 var urlpath = "widget://res/test2.flv";
  76.                 var mObjectKey;
  77.                 apiready = function() {
  78.                         demo = api.require('baiduBos');
  79.                         if (!demo) {
  80.                                 alert("请添加模块后编译");
  81.                                 return;
  82.                         }
  83.                 }
  84.                
  85.                 function selectFile(){
  86.                         if(api.systemType=='ios'){
  87.                                 urlpath = 'widget://res/test2.flv';
  88. //                                api.getPicture({
  89. //                                    sourceType: 'camera',
  90. //                                    encodingType: 'jpg',
  91. //                                    mediaValue: 'pic',
  92. //                                    destinationType: 'url',
  93. //                                    allowEdit: true,
  94. //                                    quality: 50,
  95. //                                    targetWidth: 100,
  96. //                                    targetHeight: 100,
  97. //                                    saveToPhotoAlbum: false
  98. //                                }, function(ret, err) {
  99. //                                    if (ret) {
  100. //                                        alert(JSON.stringify(ret));
  101. //                                        urlpath = ret.data;
  102. //                                    } else {
  103. //                                        alert(JSON.stringify(err));
  104. //                                    }
  105. //                                });
  106.                                 alert(urlpath);
  107.                         }else{
  108.                                 var fs = api.require('fs');
  109.                                 fs.copyTo({
  110.                                         oldPath : 'widget://res/test2.flv',
  111.                                         newPath : 'fs://'
  112.                                 }, function(ret, err) {
  113.                                         urlpath = 'fs://test2.flv';
  114.                                        
  115.                                         alert(JSON.stringify(ret));
  116.                                 });
  117.                         }

  118.                         mObjectKey = 'test/'+new Date().getTime()+".flv";
  119.                 }
  120.                
  121.                 function uploadPart_q(){
  122.                        
  123.                        
  124.                 demo.uploadPart({
  125.                         accessKey : mAccessKey,
  126.                                 secretAccessKey : mSecretAccessKey,
  127.                                 endpointBos : mEndpointBos,
  128.                                 url : urlpath,//ios支持widget:// fs:// 安卓支持 fs://
  129.                                
  130.                                 bucketName : mBucketName,
  131.                                 objectKey : mObjectKey,
  132.                                
  133.                                 //accessKey : '227f3b5959444aa4b0f6e9fd063bb16a',
  134.                                 //secretAccessKey : '1d8be6ee14f9466397fd37f7fe100293',
  135.                                 //token : 'MjUzZjQzNTY4OTE0NDRkNjg3N2E4YzJhZTc4YmU5ZDh8AAAAADgBAAAApcduBmNOW9TwCoBhdb7IML3yd97xkDZxOEazxErhpVal/gM77uP3S+FL60bbln1UPLFlCZvNROYz5Q1LftTEfS0ePVEBsRcBz1CD7UPlhWVba3CDlNymKyBXecO149fOVVW4WjXtT/2G8WaDn7Xdg3/MZf1T44RSREorjlhWDNIyMqb1HuLuSqJnhONwyLmJiHj04pYk879CAILJRJ9Qs89fVyoza2mm284CYzhQN0oTvj0SoYQ+1byBwI19bYs=',
  136.                                
  137.                                 maxConnections : 10,
  138.                                 connectionTimeoutInMillis : 5000,
  139.                                 socketTimeoutInMillis : 2000,//安卓有效
  140.                                
  141.                                 //uploadId : mUploadId //上一次上传的id,用于断点续传使用
  142.                 }, function(ret, err){
  143.                         //alert("uploadPart>>"+JSON.stringify(ret)+"  "+JSON.stringify(err));
  144.                         api.toast({
  145.                         msg : "uploadPart>>"+JSON.stringify(ret)+"  "+JSON.stringify(err)
  146.                 });
  147.                         if(ret.status){
  148.                                 if(ret.eventType=='Start'){
  149.                                         //准备开始上传,获取上传id,如果需要进行断点续传请本地保存
  150.                                         mUploadId = ret.UploadId;
  151.                                 }else if(ret.eventType=='Process'){
  152.                                         //上传进度,每一个块上传完成后进行回调
  153.                                 }else if(ret.eventType=='Success'){
  154.                                         //完成分块上传回调
  155.                                 }
  156.                         }else{
  157.                                 //error
  158.                         }
  159.                 });
  160.                 }
  161.                
  162.                 function listParts_q(){
  163.                         var param = {
  164.                                 accessKey : mAccessKey,
  165.                                 secretAccessKey : mSecretAccessKey,
  166.                                 endpointBos : mEndpointBos,
  167.                                 objectKey : mObjectKey,
  168.                                 bucketName : mBucketName,
  169.                                 uploadId : mUploadId,
  170.                                
  171.                                 maxParts : 100, //查询最大列表数
  172.                                 partNumberMarker : 0 //查询块的开始数,当前数不会被查询到
  173.                         };
  174.                        
  175.                        
  176.                 demo.listParts(param, function(ret, err){
  177.                         //alert("listParts>>"+mUploadId+" "+JSON.stringify(ret)+"  "+JSON.stringify(err));
  178.                         api.toast({
  179.                         msg: "listParts>>"+mUploadId+" "+JSON.stringify(ret)+"  "+JSON.stringify(err)
  180.                 });
  181.                 });
  182.                 }
  183.                
  184.                 function abortMultipartUpload_q(){
  185.                 demo.abortMultipartUpload({
  186.                 accessKey : mAccessKey,
  187.                 secretAccessKey : mSecretAccessKey,
  188.                 endpointBos : mEndpointBos,
  189.                 objectKey : mObjectKey,
  190.                 bucketName : mBucketName,
  191.                 uploadId : mUploadId
  192.                         }, function(ret, err){
  193.                         alert("abortMultipartUpload>>"+mUploadId+" "+JSON.stringify(ret)+"  "+JSON.stringify(err));
  194.                 });
  195.                 }
  196.                
  197.                 function deleteObject_q(){
  198.                     var param = {
  199.                                 accessKey : mAccessKey,
  200.                                 secretAccessKey : mSecretAccessKey,
  201.                                 endpointBos : mEndpointBos,
  202.                                 objectKey : mObjectKey,
  203.                                 bucketName : mBucketName
  204.                         };
  205.                        
  206.                 demo.deleteObject(param, function(ret, err){
  207.                         alert("deleteObject>>"+JSON.stringify(ret)+"  "+JSON.stringify(err));
  208.                 });
  209.             }
  210.         </script>
  211. </html>
复制代码


模块定制开发 qq: 176142998

驾校小白

UID:855108

主题:
8
帖子:
26
云币:
34
发表于 2020-11-24 15:29:22 |
您好,可否在上传文件中,添加'Content-Type',如果不添加content-Type,上传的视频,语音文件可能无法播放了,辛苦~

版主

UID:83211

主题:
169
帖子:
9259
云币:
2014

APICloud粉丝模块开发者一周年你吃屎!女朋友SB侠APICloud大会专属勋章捣蛋鬼

 楼主| 发表于 2020-11-24 17:57:34 |
Icoder 发表于 2020-11-24 15:29
您好,可否在上传文件中,添加'Content-Type',如果不添加content-Type,上传的视频,语音文件可能无法播放 ...

下个版本添加。
模块定制开发 qq: 176142998
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表