1

私はブラウザベースのオーディオプレーヤーを作っています。したがって、私が使用しているローカルディレクトリからプレイリストを作成するには:

<input type="file" id="getFile" />

次に、ボタンを使用してプレイリストを確認しています。ボタンをクリックすると、javascript関数を呼び出してオーディオタグのsrcを変更し、プレイリストで選択された新しいオーディオファイルを再生します。入力ファイルからのファイルの正確なパスを HTML5 オーディオ プレーヤーで実行したいのですが、C://Fakepath/filename.mp3 としてパスを取得し始めます。誰かがこれで私を助けることができますか?

4

2 に答える 2

16

これは、設計によるセキュリティ機能です。ブラウザ フォームに入力されたファイルの元のファイル パスを読み取れないようにする必要があります。ファイル入力は、ユーザーのファイル システム上のパスなどのメタデータではなく、ファイル コンテンツの読み取り専用です。

幸いなことに、元のファイル パスは必要ありません。を使用して、ファイルFileReaderreadAsDataURL内容を base64 でエンコードされたデータ URL に変換し、それをオーディオとして使用できますsrc。から読み込ん#myUploadInputで出力するには#myAudioElement作業フィドルとしても利用可能):

var reader = new FileReader();

reader.onload = function (event) {
    document.getElementById("myAudioElement").src = event.target.result;
};

reader.readAsDataURL(document.getElementById("myUploadInput").files[0]);
于 2013-08-15T14:00:59.697 に答える
-1

ユーザーがローカルにあるファイルに基づいてプレイリストを「構築」/作成している場合は、ローカルオーディオファイルを選択する「参照」フィールドを実行してから、フィールドの内容を取得します(パスを含める必要がありますそれらの画像)、count/id、filename.mp3、および path の配列を構築します...次に、再生するために「選択」されたものに基づいて、完全なローカル パスを再構築し、そのファイルを再生します。

それが機能するかどうかを確認するためにとにかく取るアプローチです。ここで必要な部分は、ユーザーにオーディオ ファイルへのパスを開示させることです...しかし、以前のコメンターがリンクを投稿したセキュリティ機能を考えると、それが機能するかどうかはまだ 100% 確信が持てません。

これがユーザーがローカル インストールを承認したアプリケーションに含まれている場合は、'アプリケーション ディレクトリ' を使用してそれを参照し、そのファイルをその '安全な場所' にコピーすることができますが、Web ベースであるため、実際にはワームの缶全体を開きます。ローカルディレクトリ構造を認識している可能性のある未承認/承認済みの Web 機能に関して。頑張ってください。解決策が見つかったらお知らせください。

于 2013-08-15T14:04:46.260 に答える