結果: コードロジックを実装するのが主な部分であり、具体的なページ構造を一つ一つ紹介することはありません。 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 プロジェクトをデプロイするためのサンプル コード
MySQL での SQL モードの表示と設定MySQL はさまざまなモードで実行でき、さまざまなシナ...
序文注: テストデータベースのバージョンはMySQL 8.0ですテストデータ: テーブルzqs(id...
公式サイトからmysql-5.6.37-winx64.zipの解凍バージョンをダウンロードし、構成フ...
序文リアルタイムのデータベース バックアップの必要性は非常に一般的です。MySQL 自体はレプリケー...
目次1minioはシンプル2 Dockerビルド minio 2.1 単一ノード2.2 マルチノード...
React の PC 版は Amap を使用するようにリファクタリングされました。情報を検索したと...
目次スロットスロットとは何ですか?スロットの内容コンパイルスコープフォールバックコンテンツ名前付きス...
目次1. 背景2. 複合インデックスを理解する3. 左端一致原則4. フィールド順序の影響5. 単一...
CSS3 カテゴリ メニューの効果は次のとおりです。 html <html> <ヘ...
目次連合テーブルの初期化ステートメントの実行連合の結果ユニオンオールグループ化十分なメモリステートメ...
MySQL 5.7 をインストールするには 2 つの方法があります。1 つはインストーラをダウンロー...
レイアウト部分: <div id="スライダー"> <!-- ...
vim の動作モードを設定する (一時的) :set (モード情報) :set nu — 行番号を表...
この記事では、小数点付きの星評価を実装するためのVueの具体的なコードを参考までに共有します。具体的...
MySQL は、マルチテーブルクエリを実行するときにエラーを報告します。 [SQL] SELECT ...