我正在尝试使用FileReference
类将文件上传到服务器。
该文件是在运行时编码的mp3,不会将其保存在本地硬盘上。
是否有可能以某种方式将mp3Encoder放入FileReference
?
由于
答案 0 :(得分:1)
假设您将mp3作为ByteArray(如果您尚未将其保存到磁盘,则不确定它在运行时是否存在),您可以使用URLLoader类,如下所示:
var scriptRequest:URLRequest = new URLRequest("PATH_TO_YOUR_UPLOAD_SCRIPT");
var scriptLoader:URLLoader = new URLLoader();
var scriptVars:URLVariables = new URLVariables();
scriptLoader.addEventListener(Event.COMPLETE, handleLoadSuccessful);
scriptLoader.addEventListener(IOErrorEvent.IO_ERROR, handleLoadError);
scriptVars.var1 = MP3_AS_BYTE_ARRAY;
scriptRequest.method = URLRequestMethod.POST;
scriptRequest.data = scriptVars;
scriptLoader.load(scriptRequest);
function handleLoadSuccessful($evt:Event):void
{
trace("Message sent.");
}
function handleLoadError($evt:IOErrorEvent):void
{
trace("Message failed.");
}
然后在服务器上,您只需要将流保存到文件并为其提供正确的mp3 mime类型。
这里有一个不错的教程,可以通过这个示例进行调整:http://evolve.reintroducing.com/2008/01/27/as2-to-as3/as2-%E2%86%92-as3-loadvars-as3-equivalent/
如果您需要将您的请求作为multipart / form-data发送(因此它似乎是一个附件),这里有一个很好的例子:http://marstonstudio.com/2007/10/19/how-to-take-a-snapshot-of-a-flash-movie-and-automatically-upload-the-jpg-to-a-server-in-three-easy-steps/