最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

小程序?qū)崿F(xiàn)錄音上傳功能

 更新時(shí)間:2019年11月22日 16:05:15   作者:欽晨  
這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)錄音上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了小程序錄音上傳的具體代碼,供大家參考,具體內(nèi)容如下

首先我們可以先看一下微信小程序的API

這里有關(guān)于小程序錄音的一些基本配置

index.wxml:

<view class='progress_box' bindtap='openRecording' style="display:{{openRecordingdis}}">
    <view class="progress_bgs">
     <view class="progress_bg">
      <image class="progress_img" src='../../../images/SubjectInformation/luyin.png'></image>
     </view>
   </view>
</view>

index.wxss:

.topicRecording {
 float: left;
 width: 40%;
 height: 100%;
 position: relative;
}
 
 
.progress_box {
 width: 130rpx;
 height: 130rpx;
 margin-left: -65rpx;
 position: absolute;
 bottom: 0;
 left: 50%;
 display: flex;
 align-items: center;
 justify-content: center;
 background: #ccc;
 border-radius: 50%;
}
 
.progress_bgs {
 width: 114rpx;
 height: 114rpx;
 background: #fff;
 border-radius: 50%;
 margin: 9rpx;
}
 
 
.progress_bg {
 width: 106rpx;
 height: 106rpx;
 margin: 5rpx;
 position: absolute;
 background: #444;
 border-radius: 50%;
}
 
 
 
.progress_img {
 width: 82rpx;
 height: 82rpx;
 border-radius: 50%;
 margin: 12rpx;
}

index.js:

Page({
 data: {
  openRecordingdis: "block",//錄音圖片的不同
  shutRecordingdis: "none",//錄音圖片的不同
  recordingTimeqwe:0,//錄音計(jì)時(shí)
  setInter:""http://錄音名稱
 },
 
  //錄音計(jì)時(shí)器
 recordingTimer:function(){
  var that = this;
  //將計(jì)時(shí)器賦值給setInter
  that.data.setInter = setInterval(
   function () {
    var time = that.data.recordingTimeqwe + 1;
    that.setData({
     recordingTimeqwe: time
    })
   }
   , 1000); 
 },
 
 
 //開始錄音
 openRecording: function() {
  var that = this;
  wx.getSystemInfo({
   success: function(res) {
    that.setData({
     shutRecordingdis: "block",
     openRecordingdis: "none"
    })
   }
  })
  const options = {
   duration: 60000, //指定錄音的時(shí)長(zhǎng),單位 ms,最大為10分鐘(600000),默認(rèn)為1分鐘(60000)
   sampleRate: 16000, //采樣率
   numberOfChannels: 1, //錄音通道數(shù)
   encodeBitRate: 96000, //編碼碼率
   format: 'mp3', //音頻格式,有效值 aac/mp3
   frameSize: 50, //指定幀大小,單位 KB
  }
  //開始錄音計(jì)時(shí)  
  that.recordingTimer();
  //開始錄音
  recorderManager.start(options);
  recorderManager.onStart(() => {
   console.log('。。。開始錄音。。。')
  });
  //錯(cuò)誤回調(diào)
  recorderManager.onError((res) => {
   console.log(res);
  })
 },
 
 //結(jié)束錄音
 shutRecording: function() {
  var that = this;
  wx.getSystemInfo({
   success: function(res) {
    that.setData({
     shutRecordingdis: "none",
     openRecordingdis: "block"
    })
   }
  })
  recorderManager.stop();
  recorderManager.onStop((res) => {
   console.log('。。停止錄音。。', res.tempFilePath)
   const {tempFilePath} = res;
   //結(jié)束錄音計(jì)時(shí) 
   clearInterval(that.data.setInter);
   //上傳錄音
   wx.uploadFile({
    url: appURL + '/wx_SubjectInformation/wx_SubjectRecordKeeping.do',//這是你自己后臺(tái)的連接
    filePath: tempFilePath,
    name:"file",//后臺(tái)要綁定的名稱
    header: {
     "Content-Type": "multipart/form-data"
    },
    //參數(shù)綁定
    formData:{
     recordingtime: that.data.recordingTimeqwe,
     topicid: that.data.topicid,
     userid:1,
     praisepoints:0
    },
    success:function(ress){
     console.log(res);
     wx.showToast({
      title: '保存完成',
      icon:'success',
      duration:2000
     })
    },
    fail: function(ress){
     console.log("。。錄音保存失敗。。");
    }
   })
  })
 },
 
 //錄音播放
 recordingAndPlaying: function(eve) {
  wx.playBackgroundAudio({
   //播放地址
   dataUrl: '' + eve.currentTarget.dataset.gid + ''
  })
 },
 
})

上傳服務(wù)

@RequestMapping(value = "/wx_SubjectRecordKeeping", produces = "application/json")
 @ResponseBody
 public Object wx_SubjectRecordKeeping(HttpServletRequest request,
  @RequestParam("file") MultipartFile files, String recordingtime,
  int topicid,int userid,int praisepoints) {
 // 構(gòu)建上傳目錄路徑
 // request.getServletContext().getRealPath("/upload");
 String uploadPath = 你自己保存音頻的URL;
 // 如果目錄不存在就創(chuàng)建
 File uploadDir = new File(uploadPath);
 if (!uploadDir.exists()) {
  uploadDir.mkdir();
 }
 // 獲取文件的 名稱.擴(kuò)展名
 String oldName = files.getOriginalFilename();
 String extensionName = "";
 // 獲取原來的擴(kuò)展名
 if ((oldName != null) && (oldName.length() > 0)) {
  int dot = oldName.lastIndexOf('.');
  if ((dot > -1) && (dot < (oldName.length() - 1))) {
  extensionName = oldName.substring(dot);
  }
 }
 // 構(gòu)建文件名稱
 String fileName = System.currentTimeMillis() + "_" + System.nanoTime()
  + extensionName;
 // 獲取
 String[] fileType = { ".CD", ".WAVE", ".AIFF", ".AU", ".MPEG", ".MP3",
  ".MPEG-4", ".MIDI", ".WMA", ".RealAudio", ".VQF", ".OggVorbis",
  ".AMR" };
 List<String> fileTyepLists = Arrays.asList(fileType);
 int fileTypeOnCount = 0;
 for (String fileTyepListss : fileTyepLists) {
  if (fileTyepListss.equalsIgnoreCase(extensionName)) {
  // -----如果是音頻文件的話
  // 構(gòu)建文件路徑
  String filePath = uploadPath + File.separator + fileName;
  // 保存文件
  try {
   FileUtils.writeByteArrayToFile(new File(filePath),
    files.getBytes());
  } catch (Exception e) {
   e.printStackTrace();
  }
  } else {
  fileTypeOnCount++;
  }
 }
 if (fileTypeOnCount == fileTyepLists.size()) {
  // 不是音頻文件
  return false;
 }
 return false;
 }

效果圖

點(diǎn)擊開始錄音、錄完后點(diǎn)擊結(jié)束錄音

錄音成功后的返回

錄制的音頻文件

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • css結(jié)合js制作下拉菜單示例代碼

    css結(jié)合js制作下拉菜單示例代碼

    這篇文章主要介紹了css結(jié)合js制作下拉菜單的具體實(shí)現(xiàn),需要的朋友可以參考下
    2014-02-02
  • 微信小程序緩存過期時(shí)間的使用詳情

    微信小程序緩存過期時(shí)間的使用詳情

    這篇文章主要介紹了微信小程序緩存過期時(shí)間的使用詳情,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05
  • JavaScript結(jié)合canva實(shí)現(xiàn)簡(jiǎn)單的繪圖工具

    JavaScript結(jié)合canva實(shí)現(xiàn)簡(jiǎn)單的繪圖工具

    這篇文章主要給大家介紹了如何使用JavaScript和HTML的Canvas標(biāo)簽創(chuàng)建一個(gè)簡(jiǎn)單的圖表工具,文中通過代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-12-12
  • 純css實(shí)現(xiàn)窗戶玻璃雨滴逼真效果

    純css實(shí)現(xiàn)窗戶玻璃雨滴逼真效果

    css實(shí)現(xiàn)窗戶上水珠效果,效果特別逼真,窗外的雨淅淅瀝瀝飄打在玻璃上,看起來很像模糊的窗外,斜滴的雨露,接下來給大家一起來用CSS技術(shù)實(shí)現(xiàn)這樣一幅畫面,下面給大家分享使用純css實(shí)現(xiàn)窗戶玻璃雨滴逼真效果,感興趣的朋友快樂圍觀吧
    2015-08-08
  • JS中的算法與數(shù)據(jù)結(jié)構(gòu)之集合(Set)實(shí)例詳解

    JS中的算法與數(shù)據(jù)結(jié)構(gòu)之集合(Set)實(shí)例詳解

    這篇文章主要介紹了JS中的算法與數(shù)據(jù)結(jié)構(gòu)之集合(Set),結(jié)合實(shí)例形式詳細(xì)分析了javascript中集合的概念、原理、定義及相關(guān)操作技巧,需要的朋友可以參考下
    2019-08-08
  • 微信小程序音頻錄制波紋循環(huán)動(dòng)畫

    微信小程序音頻錄制波紋循環(huán)動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了微信小程序音頻錄制波紋循環(huán)動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • js獲取數(shù)組的最后一個(gè)元素

    js獲取數(shù)組的最后一個(gè)元素

    這篇文章主要介紹了javascript獲取數(shù)組的最后一個(gè)元素,需要的朋友可以參考下
    2015-04-04
  • 跟我學(xué)Node.js(四)---Node.js的模塊載入方式與機(jī)制

    跟我學(xué)Node.js(四)---Node.js的模塊載入方式與機(jī)制

    Node.js中模塊可以通過文件路徑或名字獲取模塊的引用。模塊的引用會(huì)映射到一個(gè)js文件路徑,除非它是一個(gè)Node內(nèi)置模塊。Node的內(nèi)置模塊公開了一些常用的API給開發(fā)者,并且它們?cè)贜ode進(jìn)程開始的時(shí)候就預(yù)加載了。
    2014-06-06
  • 詳解ES6中的Map與Set集合

    詳解ES6中的Map與Set集合

    這篇文章主要介紹了詳解ES6中的Map與Set集合,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • tsconfig.json配置詳解

    tsconfig.json配置詳解

    這篇文章主要介紹了tsconfig.json配置詳解,tsconfig.json文件中指定了用來編譯這個(gè)項(xiàng)目的根文件和編譯選項(xiàng),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-05-05

最新評(píng)論

疏附县| 潮州市| 兴仁县| 光泽县| 金华市| 从江县| 黄浦区| 尉犁县| 开封县| 汽车| 旺苍县| 太谷县| 家居| 和田市| 吉木萨尔县| 化德县| 微山县| 通道| 临沧市| 临朐县| 保康县| 襄樊市| 大厂| 定陶县| 永安市| 杂多县| 自贡市| 铜川市| 密山市| 奉化市| 蓬安县| 石门县| 青州市| 濮阳市| 山丹县| 镇平县| 淮滨县| 青冈县| 全南县| 宁明县| 嵊泗县|