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删除字符。
我用notepad++打开原始png文件,找到字符,例如下面
O-humMkkVøgÆUf¯éÙô
我也试过复制文本并将文本粘贴到新文件中会损坏文件。我是不是错过了什么...
被翻译成
O-humMkkV?g?Uf????
无论如何都要用缺失的字符阅读它
将二进制数据(文件)作为 IBytesMessage 类型发送到 MQ。
你应该使用 BodyLength to define the size of the byte[], not ReadInt.
更改以下行:
var messageLength = bytesMessage.ReadInt();
收件人:
var messageLength = (int)bytesMessage.BodyLength;
当内容为文本时,ITextMessage 逻辑按预期工作。
我有一个 .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删除字符。
我用notepad++打开原始png文件,找到字符,例如下面
O-humMkkVøgÆUf¯éÙô
我也试过复制文本并将文本粘贴到新文件中会损坏文件。我是不是错过了什么... 被翻译成
O-humMkkV?g?Uf????
无论如何都要用缺失的字符阅读它
将二进制数据(文件)作为 IBytesMessage 类型发送到 MQ。
你应该使用 BodyLength to define the size of the byte[], not ReadInt.
更改以下行:
var messageLength = bytesMessage.ReadInt();
收件人:
var messageLength = (int)bytesMessage.BodyLength;
当内容为文本时,ITextMessage 逻辑按预期工作。