簡體   English   中英

IBM XMS .Net 如何從 MQ 接收 png 和 jpg 等圖像文件

[英]IBM XMS .Net how do I receive images files like png and jpg from the MQ

我有一個 .net XMS 客戶端來接收來自 MQ 的消息。 它可以很好地接收文本文件。 但是當我嘗試接收 .zip 或 png 文件時問題就開始了。 問題是保存的文件已損壞並且總是將其解釋為短信。

            var filename = "test.png";
            else if (message is IBytesMessage)
            {
               IBytesMessage bytesMessage = (IBytesMessage)message;
               var messageLength = bytesMessage.ReadInt();
               byte[] uploadPayload = new byte[messageLength];
               bytesMessage.ReadBytes(uploadPayload, messageLength);

               var filePath = _fileUtil.SaveBytesFile(fileName, uploadPayload);
               return filePath;
            }
            if (message is ITextMessage)
            {
                var msg = (ITextMessage)message;
                var result = msg.Text;
                var plainTextBytes = Encoding.UTF8.GetBytes(result);
                var filePath = _fileUtil.SaveBytesFile(fileName, plainTextBytes);
                return filePath;

            }

msg.Text刪除字符
我在記事本++中打開原始png文件並找到字符,例如下面


O-humMkkVøgÆUf¯éÙô

我還嘗試復制文本並將文本粘貼到新文件中會損壞文件。 我錯過了什么......被翻譯成


O-humMkkV?g?Uf????

無論如何用丟失的字符閱讀它

將二進制數據(文件)作為IBytesMessage類型發送到 MQ。

您應該使用BodyLength來定義 byte[] 的大小,而不是ReadInt

更改以下行:

var messageLength = bytesMessage.ReadInt();

到:

var messageLength = (int)bytesMessage.BodyLength;

當內容為文本時, ITextMessage邏輯按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM