Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 如何将位图数据上载到服务器(ActionScript 3)?_Flash_Actionscript 3_Bitmapdata_Urlloader - Fatal编程技术网

Flash 如何将位图数据上载到服务器(ActionScript 3)?

Flash 如何将位图数据上载到服务器(ActionScript 3)?,flash,actionscript-3,bitmapdata,urlloader,Flash,Actionscript 3,Bitmapdata,Urlloader,我有位图数据。我想使用URLLoader将其上载到服务器。我尝试了很多方法,但没有结果。 这是我在ActionScript 3中的当前代码: import flash.net.URLLoader; import flash.net.URLRequest; import mx.graphics.codec.JPEGEncoder; ... var jpg:JPEGEncoder = new JPEGEncoder(); var myBytes:ByteArray = jpg.encode(bitm

我有位图数据。我想使用URLLoader将其上载到服务器。我尝试了很多方法,但没有结果。 这是我在ActionScript 3中的当前代码:

import flash.net.URLLoader;
import flash.net.URLRequest;
import mx.graphics.codec.JPEGEncoder;
...
var jpg:JPEGEncoder = new JPEGEncoder();
var myBytes:ByteArray = jpg.encode(bitmapData);
var uploader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("uploadFile.php");
request.contentType = "application/octet-stream";
request.data = myBytes;
uploader.load(request);
我获取一个对象bitmapData并将其编码为jpg。之后,我尝试将jpg字节发送到服务器上的文件“uploadFile.php”。但既没有错误,也没有积极的结果。
如有任何建议,我将不胜感激

这是我以前使用过的AS3代码-这在请求正文中使用二进制数据发出POST请求:

var url_request:URLRequest = new URLRequest();
url_request.url = "http://server.com/upload.php";
url_request.contentType = "binary/octet-stream";
url_request.method = URLRequestMethod.POST;
url_request.data = myByteArray;
url_request.requestHeaders.push(
 new URLRequestHeader('Cache-Control', 'no-cache'));

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
// attach complete/error listeners
loader.load(url_request);
我注意到您没有将.dataFormat设置为二进制,也没有将.method设置为POST

请注意,这可能是您遇到的安全问题。我见过这样的代码必须执行以响应用户操作(如单击按钮)的情况


您还应该检查服务器日志,查看请求是否发送到服务器。请注意,如果没有完全限定的url(以http:///开头),它会假定服务器从与SWF文件相同的位置为您的PHP文件提供服务。

这是我以前用于此目的的AS3代码-这会在请求正文中使用二进制数据发出POST请求:

var url_request:URLRequest = new URLRequest();
url_request.url = "http://server.com/upload.php";
url_request.contentType = "binary/octet-stream";
url_request.method = URLRequestMethod.POST;
url_request.data = myByteArray;
url_request.requestHeaders.push(
 new URLRequestHeader('Cache-Control', 'no-cache'));

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
// attach complete/error listeners
loader.load(url_request);
我注意到您没有将.dataFormat设置为二进制,也没有将.method设置为POST

请注意,这可能是您遇到的安全问题。我见过这样的代码必须执行以响应用户操作(如单击按钮)的情况


您还应该检查服务器日志,查看请求是否发送到服务器。请注意,如果没有完全限定的url(以http:///开头),它将假定服务器从与SWF文件相同的位置为您的PHP文件提供服务。

您对图像的编码将破坏它,因为jpg数据包含非ascii字符。
将contentType更改为“image/jpeg”应该可以解决此问题,但此语句未经测试

当我将JPG发送到服务器时,我总是先对其进行base64编码,然后在服务器端对其进行解码

import mx.utils.Base64Encoder;

var b64:Base64Encoder = new Base64Encoder()
b64.encodeBytes( myBytes )
var encodedb64.toString();

request.data = b64.toString();

由于jpg数据包含非ascii字符,您对图像的编码将使其中断。
将contentType更改为“image/jpeg”应该可以解决此问题,但此语句未经测试

当我将JPG发送到服务器时,我总是先对其进行base64编码,然后在服务器端对其进行解码

import mx.utils.Base64Encoder;

var b64:Base64Encoder = new Base64Encoder()
b64.encodeBytes( myBytes )
var encodedb64.toString();

request.data = b64.toString();