不使用FileReference.browse()将文件上传到服务器

时间:2012-05-30 18:41:23

标签: actionscript-3

我正在尝试使用FileReference类将文件上传到服务器。 该文件是在运行时编码的mp3,不会将其保存在本地硬盘上。

是否有可能以某种方式将mp3Encoder放入FileReference

由于

1 个答案:

答案 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/