Apache flex FileReference和HttpService浏览图像修改它,然后上载它

Apache flex FileReference和HttpService浏览图像修改它,然后上载它,apache-flex,upload,httpservice,filereference,gumbo,Apache Flex,Upload,Httpservice,Filereference,Gumbo,我正在尝试做一个图像上传程序,用户可以: -使用按钮浏览本地文件。浏览 -选择一个并将其另存为文件引用。 -然后执行FileReference.load(),然后将数据绑定到图像控件。 -在我们对其进行旋转并更改图像数据后。 -最后我们把它上传到服务器上 要更改图像数据,我获取显示图像的矩阵并对其进行变换,然后重新使用新矩阵并将其绑定到旧图像: private function TurnImage():void { //Turn it var m:Matrix = _img.t

我正在尝试做一个图像上传程序,用户可以:
-使用按钮浏览本地文件。浏览
-选择一个并将其另存为文件引用。
-然后执行FileReference.load(),然后将数据绑定到图像控件。
-在我们对其进行旋转并更改图像数据后。
-最后我们把它上传到服务器上

要更改图像数据,我获取显示图像的矩阵并对其进行变换,然后重新使用新矩阵并将其绑定到旧图像:

private function TurnImage():void
{ 
    //Turn it
    var m:Matrix = _img.transform.matrix;
    rotateImage(m);
    _img.transform.matrix = m;
}
现在的问题是,我真的不知道如何将数据作为文件发送到我的服务器,因为它没有存储在FileReference中,FileReference中的数据是只读的,所以我们不能更改它或创建新的,所以我不能使用.upload()


然后我尝试了HttpService.send,但我不知道如何发送文件而不是mxml。

您可以使用URLLoader将二进制字节数组发送到服务器,如:

var urlRequest : URLRequest = new URLRequest();
urlRequest.url = 'path to your server';
urlRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary();
urlRequest.method = URLRequestMethod.POST;
urlRequest.data = UploadPostHelper.getPostData( 'image.jpg', byteArray );
urlRequest.requestHeaders.push( new URLRequestHeader( 'Cache-Control', 'no-cache' ) );

// create the image loader & send the image to the server:<br />
var urlLoader : URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.load( urlRequest );
并使用上面的URLLoader代码将图像发送到服务器


它可以很好地工作,但您不会像从FileReference.upload获得的那样获得文件上载进度。如果您可以使用URLLoader进行上传,请在此处发布您的答案。

您可以使用URLLoader将二进制字节数组发送到服务器,如:

var urlRequest : URLRequest = new URLRequest();
urlRequest.url = 'path to your server';
urlRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary();
urlRequest.method = URLRequestMethod.POST;
urlRequest.data = UploadPostHelper.getPostData( 'image.jpg', byteArray );
urlRequest.requestHeaders.push( new URLRequestHeader( 'Cache-Control', 'no-cache' ) );

// create the image loader & send the image to the server:<br />
var urlLoader : URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.load( urlRequest );
并使用上面的URLLoader代码将图像发送到服务器

它可以很好地工作,但您不会像从FileReference.upload获得的那样获得文件上载进度。如果您可以使用URLLoader上传进度,请在此处发布您的答案

var byteArray : ByteArray = new JPGEncoder( 90 ).encode( bmd );