IHAVE不知道有关在Flash和ActionScript编程。其实我是一个Java EE开发。
Ihave no idea about programming in Flash or Actionscript. Actually I am a Java EE Developer.
在一个Flash文件我有这样的方法:
In a flash file I have this method:
private function recordComplete(e:Event):void
{
fileReference.save(recorder.output, "recording.wav");
}
此方法将保存录制的声音为recording.wav我们将指定文件夹中。
This method will save a recorded sound to "recording.wav" in the folder that we will specify.
我想要做的就是通过发送录制的声音,以一个Java servlet来更改保存到磁盘。
What I want to do is to change the save to the disk by sending the recorded sound to a Java Servlet.
我发现这个code,但我不知道如何插入recorder.output在HTTP请求发送PARAMS:
I found this code, but I dont know how to insert the recorder.output in params sent in the HTTP Request:
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);
请帮忙。
推荐答案
在默认情况下闪光灯无法创建参数多部分
的要求,你必须手动构建它。下面是我用我的projecs简单实用的方法:
By default flash can't create multipart
request with parameters, you have to construct it manually. Here is the simple utility method I used in my projecs:
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 = "rn--" + BOUNDARY + "rn" +
"Content-Disposition: form-data; name=""+fileProp+""; filename=""+fileName+""rn" +
"Content-Type: image/pngrn" + "rn";
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 + "rn" + "Content-Disposition: form-data; name=""+prop+""rn" + "rn" + params[prop]+"rn" + "--" + 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;
}
所以,你应该修改code以这样的方式:
So you should modify your code in such way:
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);
相关推荐
最新文章