結果: コードロジックを実装するのが主な部分であり、具体的なページ構造を一つ一つ紹介することはありません。 Vue部分: cnpm インストール recorderx --save または npm インストール recorderx --save 特定のコンポーネントに導入 <スクリプト> 「axios」からaxiosをインポートします。 輸入 { トースト } から "vant" へ; Recorderxをインポートします。{ エンコードタイプ } から "recorderx"; 定数rc = 新しいレコーダーx(); エクスポートデフォルト{ データ(){ 戻る { 開始時刻:null、 終了時間:null } }, 方法:{ //音声録音recordingVoice() { // that.news_img = !that.news_img rc.start() .then(() => { this.startime = 新しい Date(); }) .catch(エラー => { alert("マイクを取得できませんでした"); }); }, //音声を送信する async sendVoice() { rc.一時停止(); this.endtime = 新しい日付(); wav = rc.getRecord({ エンコード先: ENCODE_TYPE.WAV、 圧縮可能: true }); voiceTime = Math.ceil((this.endtime - this.starttime) / 1000); とします。 フォームデータを作成します。 formData.append("chatVoice", wav, Date.parse(new Date()) + ".wav"); formData.append("音声時間", 音声時間); ヘッダーを{ ヘッダー: { 「コンテンツタイプ」: 「マルチパート/フォームデータ」 } }; アクシオス .post("/api/uploadChatVoice", フォームデータ, ヘッダー) .then(res => { //コンソール.log(res) (res.data.status === 2)の場合{ rcをクリアします。 chatVoiceMsg を res.data.chatVoiceMsg とします。 } } }); }, //オーディオを再生する playChatVoice(audio) { audioUrl を audio とします。 if(オーディオURL){ audioExample を新しい Audio() に追加します。 audioExample.src = audioUrl; //再生したいオーディオアドレス audioExample.play(); }それ以外{ Toast('音声アドレスが破棄されました'); } }, } }; </スクリプト> ノード部分: cnpm マルチパーティをインストール --save 定数 express = require('express'); 定数ルーター = express.Router(); マルチパーティは必須です。 定数NET_URL = 'http://127.0.0.1:3000/'; router.post('/uploadChatVoice', (req, res, next) => { フォームを新しい multiparty.Form() にします。 フォーム.uploadDir = 'chatVoiceUpload'; form.parse(req, (err, フィールド, ファイル) => { console.log(ファイル、フィールド) chatVoiceUrl = NET_URL + files.chatVoice[0].path.replace(/\\/g, "/"); とします。 chatVoiceTime = fields.voiceTime[0]とします コンソールログ(チャットボイスURL) チャットボイスURLの場合 res.json({ ステータス: 2, チャットボイスメッセージ: { チャットボイスタイム、 チャットボイスURL、 } }) } それ以外 { res.json({ ステータス: 1, チャットボイスメッセージ: { チャットボイスタイム: "", チャットボイスURL: "" } }) } //console.log(ファイル) }) }) app.jsで音声ファイルのパスを定義する app.use('/chatVoiceUpload', express.static('chatVoiceUpload')); Vue+node によるオーディオ録音・再生機能の実現についての記事はこれで終わりです。Vue オーディオ録音・再生に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: MySQL 5.7.18 無料インストール版ウィンドウ設定方法
>>: Docker で Spring-boot プロジェクトをデプロイするためのサンプル コード
<br />作業を簡単に完了できる Web ページ作成ツールは数多くありますが、HTML...
<br />ポテトチップスパーティーのこのエピソードに参加して、何人かの友達に会えてとて...
序文最近、仕事でAES_ENCRYPT()関数を使用してプレーンテキストを暗号化し、MySQL に保...
1. トランザクション特性(ACID) (1)原子性トランザクションに関係するプログラムによって実行...
チュートリアルシリーズMySQL シリーズ: MySQL リレーショナル データベースの基本概念My...
1. クロスドメインを実現するためにCORSレスポンスヘッダーを設定するクロスオリジンリソース共有...
インストールとアンインストールの表示 # rpm -qa | grep mysql を表示 # アン...
実際、上記の 3 つの表はいずれも 3 行 3 列です。区切り線を非表示にするコツはルールにあります...
それは何ですか? em はフォントの高さを指し、どのブラウザでもデフォルトのフォントの高さは 16 ...
現象: MySQL バージョン 5.7 以降では、日付型と日付時刻型のデフォルト値が「0000-00...
コンテナのライフサイクルコンテナランタイムのライフサイクルコンテナは、分離特性を持つプロセスのセット...
導入MySQL スロー クエリ ログは、問題のある SQL ステートメントのトラブルシューティングや...
通常、vue プロジェクトではルーティングを使用します。vue-router は vue.js の公...
序文非表示要素の 3 つの属性である表示、可視性、不透明度の類似点と相違点は、フロントエンドの就職面...
<br />このシリーズの最初のセクションでは、Web サイトのパフォーマンスを向上させ...