I ran into a very similar problem and finally got an answer (credit for the user stopoverflow user). It turns out that if you send binary data via URLRequest, you must manually format it as POST data. Take a look at this code:
//*** FORMAT POST DATA ***// var myByteArray:ByteArray = new ByteArray; //Data to be uploaded var myData:ByteArray = new ByteArray; var myBoundary:String = ""; var stringData:String; var i:uint; for (i = 0; i < 0x20; ++i ) myBoundary += String.fromCharCode(uint(97+Math.random()*25)); myData.writeShort(0x2d2d); //-- myData.writeUTFBytes(myBoundary); myData.writeShort(0x0d0a); //\r\n stringData = 'Content-Disposition: form-data; name="fieldName"; filename="filename.txt"'; for (i = 0; i < stringData.length; i++) myData.writeByte(stringData.charCodeAt(i)); myData.writeShort(0x0d0a); //\r\n stringData = 'Content-Type: application/octet-stream'; //Change me! myData.writeShort(0x0d0a); //\r\n myData.writeShort(0x0d0a); //\r\n for (i = 0; i < stringData.length; i++) myData.writeByte(stringData.charCodeAt(i)); myData.writeBytes(myByteArray, 0, myByteArray.length ); myData.writeShort(0x0d0a); //\r\n myData.writeShort(0x2d2d); //-- myData.writeUTFBytes(myBoundary); myData.writeShort(0x2d2d); //-- //*** SEND REQUEST ***// var uploadRequest:URLRequest = new URLRequest("http://127.0.0.1/upload.php"); uploadRequest.method = URLRequestMethod.POST; uploadRequest.contentType = 'multipart/form-data; boundary=' + myBoundary; uploadRequest.data = myData uploadRequest.requestHeaders.push( new URLRequestHeader( 'Cache-Control', 'no-cache' ) ); var uploader:URLLoader = new URLLoader; uploader.dataFormat = URLLoaderDataFormat.BINARY; uploader.load(uploadRequest);
Basically you add the parameter "; border = [border string]" to the content type, and then format your request as such:
I hope this helps!
source share