From 38a1eba5e8b80dec5b46a5f9456dabe02d4389a7 Mon Sep 17 00:00:00 2001 From: Cristallium Date: Sat, 23 Sep 2023 14:49:52 +0200 Subject: [PATCH 1/2] Update BinaryUploader.as --- .../src/main/royale/org/apache/royale/net/BinaryUploader.as | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frameworks/projects/Network/src/main/royale/org/apache/royale/net/BinaryUploader.as b/frameworks/projects/Network/src/main/royale/org/apache/royale/net/BinaryUploader.as index 067ee40b26..2a97c4295b 100644 --- a/frameworks/projects/Network/src/main/royale/org/apache/royale/net/BinaryUploader.as +++ b/frameworks/projects/Network/src/main/royale/org/apache/royale/net/BinaryUploader.as @@ -574,7 +574,7 @@ COMPILE::SWF url += '?' + _binaryData.data; } } else { - binaryData = _binaryData.data.toString(); + binaryData = _binaryData.toString(); } } From 22bed2564662c506cc227ee86a9001eed162de2a Mon Sep 17 00:00:00 2001 From: Cristallium Date: Mon, 25 Sep 2023 15:26:49 +0200 Subject: [PATCH 2/2] Fix POST data send by sending typedArray instead of utf8 string fix issue where file has for exemple 0x0c inside. It will be wrong encoded by the TextEncoder('utf8'). To solve that as XMLHttpRequest now send typed array (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#sending_typed_arrays_as_binary_data), there is no need to convert to utf8 string --- .../org/apache/royale/net/BinaryUploader.as | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/frameworks/projects/Network/src/main/royale/org/apache/royale/net/BinaryUploader.as b/frameworks/projects/Network/src/main/royale/org/apache/royale/net/BinaryUploader.as index 2a97c4295b..c8867e799e 100644 --- a/frameworks/projects/Network/src/main/royale/org/apache/royale/net/BinaryUploader.as +++ b/frameworks/projects/Network/src/main/royale/org/apache/royale/net/BinaryUploader.as @@ -565,18 +565,7 @@ COMPILE::SWF url = _url; - var binaryData:String = null; - if (_binaryData != null) { - if (_method == HTTPConstants.GET) { - if (url.indexOf('?') != -1) { - url += _binaryData.data; - } else { - url += '?' + _binaryData.data; - } - } else { - binaryData = _binaryData.toString(); - } - } + element.open(_method, _url, true); element.timeout = _timeout; @@ -595,15 +584,26 @@ COMPILE::SWF } if (_method != HTTPConstants.GET && - !sawContentType && binaryData) { + !sawContentType && _binaryData) { element.setRequestHeader( HTTPHeader.CONTENT_TYPE, _contentType); } - if (binaryData) { - element.setRequestHeader(HTTPHeader.CONTENT_LENGTH, binaryData.length.toString()); - element.setRequestHeader(HTTPHeader.CONNECTION, 'close'); - element.send(binaryData); + if (_binaryData) { + //element.setRequestHeader(HTTPHeader.CONTENT_LENGTH, binaryData.length.toString()); // seem useless and generate error + //element.setRequestHeader(HTTPHeader.CONNECTION, 'close'); // seem useless and generate error + + if (_method == HTTPConstants.GET) { + if (url.indexOf('?') != -1) { + url += _binaryData.toString(); + } else { + url += '?' + _binaryData.toString(); + } + element.send(); + } else { + element.send(_binaryData.array); + } + } else { element.send(); }