結果: コードロジックを実装するのが主な部分であり、具体的なページ構造を一つ一つ紹介することはありません。 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 プロジェクトをデプロイするためのサンプル コード
フロントエンドの担当者であれば、面接でも仕事中でも、「CSS を使用して中央揃えにする」という効果に...
カーソルの作成まず、MySql でデータ テーブルを作成します。 存在しない場合はテーブルを作成 `...
なぜprettierを使うのですか?大企業では、フロントエンド開発コードに独自のコード標準がある場合...
forループを使用してZabbixイメージをコンテナにインポートします。 n を `ls *.tar...
問題: MySQL がデータ ファイルを保存するパーティションの容量が小さく、現在いっぱいになってい...
conda アップデート conda pip で tf-nightly-gpu-2.0-previ...
1. CSSの記述形式1. インラインスタイルCSSコードを開始タグに直接記述することができます&l...
概要:市販されているいくつかのタイムテーブルソフトウェアから教訓を得ました。機能が複雑すぎるため、タ...
1. forEach() は map() に似ています。これも渡された関数に各要素を順番に適用します...
序文WEB 開発では、クロスドメイン リクエストが頻繁に発生します。クロスドメインの問題を解決する方...
以前は、Web ページのプリンタ対応バージョンを作成するには、印刷したときに見栄えがよくなるようにレ...
新しいプロジェクトを始めるこの記事では主に、新規プロジェクトを0から1まで取り組むプロセスを記録し、...
証明書チェーンを生成するスクリプトを使用して、ルート証明書、中間証明書、および 3 つのクライアント...
序文多くの場合、仮想マシンを使用します。たとえば、一部のテストは検出されません。何かを壊すことを心配...
クラスターを構成する際に問題が発生しました。当初は 3 台の仮想マシンすべてが外部ネットワークに p...