H49-毕设:网易云音乐

这次我们做一个仿手机端网易云音乐

在写代码之前先做好准备工作,需求分析等
首先我们来画图

接下来搭建 LeanCloud 环境

  1. 创建一个新应用 wy-music
  2. 在 帮助-快速入门 中按照教程安装 SDK
  3. 然后验证-测试代码
  4. 添加 Song 和 Playlist 两个 Class

SDK 是什么

软件开发工具包(Software Development Kit, SDK)一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、作业系统等建立应用软件的开发工具的集合。
SDK 与 API 的区别

创建七牛帐号并上传一个mp3成功

注意七牛的版本使用的是 1.0.22,
npm安装的是 2.x,安装后在 package.json中修改后 npm i
代码
方案一:

  1. 注册七牛帐号(上传身份证)
  2. 创建一个篮子(bucket)
  3. 往篮子里上传 mp3 文件
  4. 获取 mp3 文件的外链

方案二:

  1. 注册七牛帐号(上传身份证)
  2. 创建一个篮子(bucket)
  3. 创建一个 nodejs server
  4. 进入七牛 SDK 官网,选择 Node.js
  5. npm init -y
  6. npm install qiniu
  7. 添加 /uptoken 路由
  8. 在 /uptoken 中添加代码
  ```
  if (path === '/uptoken') {
    response.statusCode = 200
    response.setHeader('Content-Type', 'text/json;charset=utf-8')
    // set CORS
    response.setHeader('Access-Control-Allow-Origin', '*')
    // 获取 key,本地文件不上传
    var key = fs.readFileSync('./qiniu-key.json')
    key = JSON.parse(key)
    // 创建各种上传凭证之前,我们需要定义好其中鉴权对象mac
    let { accessKey, secretKey } = key
    var mac = new qiniu.auth.digest.Mac(accessKey, secretKey);
    // 简单上传
    var options = {
      scope: "wy-music", // 篮子(bucket)名称
    };
    var putPolicy = new qiniu.rs.PutPolicy(options);
    var uploadToken = putPolicy.uploadToken(mac);
    // 返回 uoloadToken,admin.html设置访问获取
    response.write(`
    {
      "uptoken": "${uploadToken}"
    }
    `)
    response.end()
  }
  ```
6. 将 uploadToken 作为响应输出
7. node server.js 8888,启动 server
  1. 管理员页面admin.html,参考七牛的示例,使用 Qiniu.uploader 来上传文件
  2. 引入 moxie 1.x
  3. 引入 plupload 2.x
  4. 引入 qiniu-js 1.x
  ```
  <script src="../venders/moxie.min.js"></script>
  <script src="../venders/plupload.min.js"></script>
  <script src="../node_modules/qiniu-js/dist/qiniu.min.js"></script>
  ```
  1. 初始化上传按钮
```
var uploader = Qiniu.uploader({
  disable_statistics_report: false, // 禁止自动发送上传统计信息到七牛,默认允许发送
  runtimes: 'html5', // 上传模式,依次退化
  browse_button: 'uploadBtn', // 上传选择的点选按钮,**必需**
  uptoken_url: 'http://localhost:8888/uptoken', 
  get_new_uptoken: false, // 设置上传文件的时候是否每次都重新获取新的 uptoken
  domain: 'https://p6az32xea.bkt.clouddn.com', // bucket 域名,下载资源时用到,如:'http:// xxx.bkt.clouddn.com/' **必需**
   max_file_size: '40mb', // 最大文件体积限制
   flash_swf_url: 'path/of/plupload/Moxie.swf', //引入 flash,相对路径
   max_retries: 3, // 上传失败最大重试次数
   dragdrop: true, // 开启可拖曳上传
   drop_element: 'uploadContainer', // 拖曳上传区域元素的 ID,拖曳文件或文件夹后可触发上传
   chunk_size: '4mb', // 分块上传时,每块的体积
   auto_start: true, // 选择文件后自动上传,若关闭需要自己绑定事件触发上传,
   init: {
     'FilesAdded': function(up, files) {
       plupload.each(files, function(file) {
         // 文件添加进队列后,处理相关的事情
       });
     },
     'BeforeUpload': function(up, file) {
       // 每个文件上传前,处理相关的事情
     },
     'UploadProgress': function(up, file) {
       // 每个文件上传时,处理相关的事情
       uploadStatus.innerText = '上传中……'
     },
     'FileUploaded': function(up, file, info) {
       // 每个文件上传成功后,处理相关的事情
       uploadStatus.innerText = '上传完毕'
       // 其中 info.response 是文件上传成功后,服务端返回的json,形式如
       // {
       //    "hash": "Fh8xVqod2MQ1mocfI4S4KpRL6D98",
       //    "key": "gogopher.jpg"
       //  }
       // 参考http://developer.qiniu.com/docs/v6/api/overview/up/response/simple-response.html
       // var domain = up.getOption('domain');
       // var res = parseJSON(info.response);
       // var sourceLink = domain + res.key; 获取上传成功后的文件的Url
     },
     'Error': function(up, err, errTip) {
       //上传出错时,处理相关的事情
     },
     'UploadComplete': function() {
       //队列文件处理完毕后,处理相关的事情
     }
   }
 });
```

本文所使用的依赖:
moxie 版本号:1.5.6
plupload 版本号:2.3.6

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,740评论 0 15
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,482评论 25 709
  • 趁故乡睡着的时候 我收拾行李,偷偷上路 身后的夜色 渐浓 不敢回头望 怕你醒来,赶我的路 我说不出珍重二字 车轮径...
    冷冬年阅读 3,165评论 11 33
  • 客户给到的需求以及功能点做整理,详细问到: 1,我们这次的项目主要有哪些功能,按照想要突出的顺序着重排序。 2,交...
    Morgan先生阅读 2,586评论 0 0
  • 我羡慕你,一生随性,什么都可以由自己。 我做不来,我有牵绊,我怕辜负自己的一字一句。 我羡慕你,没有说词,至此还可...
    邓斯文阅读 3,696评论 0 1