6

ユーザーがマイク入力から独自の録音を作成できるようにするRecorder.jsを使用しています。初心者なのでこのサイトを参考にしています。

このコードは、ダウンロード可能な .wav ファイルを作成します。

<html>
    <head>
        <script src="js/recorderjs/recorder.js"></script>
        <script src="js/main.js"></script>
        <script src="http://code.jquery.com/jquery-latest.min.js"></script>
    </head>

    <body>
        <img id="record" src="mic.png" onclick="toggleRecording(this);"><br>

        <img src="save.svg" onclick="saveAudio();">

        <form action="savefile.php" method="post">
            <input type="submit" value="Submit">
        </form>
    </body>
</html>

これにより、記録が開始および停止されます。

<img id="record" src="mic.png" onclick="toggleRecording(this);">

これにより、recorder.js スクリプトから .wav ファイルがダウンロードされます。

<img src="save.svg" onclick="saveAudio();">

この PHP スクリプトを使用して、.wav ファイルを /audio ディレクトリに保存しようとしています。

<?php

$save_folder = dirname(__FILE__) . "/audio";
if(! file_exists($save_folder)) {
    if(! mkdir($save_folder)) {
        die("failed to create save folder $save_folder");
    }
}

$key = 'filename';
$tmp_name = $_FILES["audiofile"]["tmp_name"];
$upload_name = $_FILES["audiofile"]["name"];
$type = $_FILES["audiofile"]["type"];
$filename = "$save_folder/$upload_name";
$saved = 0;
if(($type == 'audio/x-wav' || $type == 'application/octet-stream') && preg_match('/^[a-zA-Z0-9_\-]+\.wav$/', $upload_name) ) {

    $saved = move_uploaded_file($tmp_name, $filename) ? 1 : 0;
}

?>

今、私が望んでいるのは、ユーザーにファイルをダウンロードさせる代わりに、.wav ファイルをフォルダー /audio にアップロードする PHP スクリプトを手伝ってくれる人です。

これについての助けをいただければ幸いです。

4

1 に答える 1

4

ローカル パスが必要なため、通常の http ファイル フィールドは使用できないと思います。AJAX でアップロードを試すことができます。

var req = null;
var url = "savefile.php";
var data = "":   // you have to check how to get the data from your saveAudio() method

(window.XMLHttpRequest) ? req = new XMLHttpRequest() : (window.ActiveXObject) ? req = new ActiveXObject("Microsoft.XMLHTTP") : req = false; 
req.open(method, url, true);
req.setRequestHeader("Content-Type", "multipart/form-data");

if(data != null && data != "")
{
  req.setRequestHeader("Content-length", data.length);
  req.send(data);
}

saveAudio()関数からファイルコンテンツを取得して変数に入力する方法を見つける必要がありdataます。

そして多分これはあなたもajaxでファイルをアップロードするのに役立つかもしれません

于 2013-09-30T08:46:06.950 に答える