This is an automated email from the ASF dual-hosted git repository. hiedra pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
The following commit(s) were added to refs/heads/develop by this push: new dbee6ab60a Fix binary uploader (#1235) dbee6ab60a is described below commit dbee6ab60afa52f12afe95c46d2c65e0df7fee79 Author: Cristallium <cont...@cristallium.com> AuthorDate: Fri Oct 13 13:12:16 2023 +0200 Fix binary uploader (#1235) * Update BinaryUploader.as * 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 --- .../royale/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 067ee40b26..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.data.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(); }