1

Flash や Actionscript でのプログラミングについてはまったくわかりません。実は私は Java EE 開発者です。

フラッシュファイルには、次の方法があります。

    private function recordComplete(e:Event):void
    {
        fileReference.save(recorder.output, "recording.wav");

    }

このメソッドは、録音したサウンドを、指定したフォルダー内の「recording.wav」に保存します。

やりたいことは、録音したサウンドを Java サーブレットに送信して、ディスクへの保存を変更することです。

このコードを見つけましたが、HTTP リクエストで送信されたパラメータにrecorder.output を挿入する方法がわかりません:

var uploadRequest:URLRequest = new URLRequest("http://127.0.0.1:8080/uploading/upservlet");
        uploadRequest.method = URLRequestMethod.POST;
        uploadRequest.contentType = "multipart/form-data";
        uploadRequest.data = myByteArray;

        var uploader:URLLoader = new URLLoader;
        uploader.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
        uploader.addEventListener(Event.COMPLETE, onUploadComplete);
        uploader.dataFormat = URLLoaderDataFormat.BINARY;
        uploader.load(uploadRequest);

助けてください。

4

1 に答える 1

3

デフォルトでは、フラッシュはmultipartパラメーターを使用してリクエストを作成できません。手動で作成する必要があります。プロジェクトで使用した簡単なユーティリティ メソッドを次に示します。

private static const BOUNDARY:String = "boundary";

/**
 * Create multipart request for URLLoader 
 * NOTE: Don't forget to set the URLLoader.dataFormat = URLLoaderDataFormat.BINARY;
 * @param url upload url
 * @param bytes bytes to upload
 */ 
public static function createMultiPartRequest(url:String, bytes:ByteArray, fileProp:String="file1", fileName:String="file1.png", params:Object=null):URLRequest
{
    var request:URLRequest = new URLRequest(url);

    var header1:String = "\r\n--" + BOUNDARY + "\r\n" + 
        "Content-Disposition: form-data; name=\""+fileProp+"\"; filename=\""+fileName+"\"\r\n" + 
        "Content-Type: image/png\r\n" + "\r\n";
    var headerBytes1:ByteArray = new ByteArray();
    headerBytes1.writeMultiByte(header1, "ascii");
    var postData:ByteArray = new ByteArray();
    postData.writeBytes(headerBytes1, 0, headerBytes1.length);

    if(bytes)
        postData.writeBytes(bytes, 0, bytes.length);

    if (!params)
        params = {};
    if (!params.Upload)
        params.Upload = "Submit Query";
    for (var prop:String in params) {
        var header:String = "--" + BOUNDARY + "\r\n" + "Content-Disposition: form-data; name=\""+prop+"\"\r\n" + "\r\n" + params[prop]+"\r\n" + "--" + BOUNDARY + "--";
        var headerBytes:ByteArray = new ByteArray();
        headerBytes.writeMultiByte(header, "ascii");
        postData.writeBytes(headerBytes, 0, headerBytes.length);
    }
    request.data = postData;
    request.method = URLRequestMethod.POST;
    request.contentType = "multipart/form-data; boundary=" + BOUNDARY;

    return request;
}

したがって、次のようにコードを変更する必要があります。

    var uploadRequest:URLRequest = createMultiPartRequest("http://127.0.0.1:8080/uploading/upservlet", myByteArray, "file1", recorder.output, {param1:value1});

    var uploader:URLLoader = new URLLoader;
    uploader.addEventListener(ProgressEvent.PROGRESS, onUploadProgress);
    uploader.addEventListener(Event.COMPLETE, onUploadComplete);
    uploader.dataFormat = URLLoaderDataFormat.BINARY;
    uploader.load(uploadRequest);
于 2013-09-16T14:47:05.397 に答える