IBM XMS . net如何从MQ接收png和jpg等图像文件



我有一个.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;
}

味精。文本删除字符。
我在notepad++中打开了原始的png文件,找到了字符,例如在

下面

O-humMkkVøgÆUf¯éÙô

我还尝试复制文本并将文本粘贴到新文件中,这会破坏文件。我是不是错过了什么……被翻译成


O-humMkkV?g?Uf????

不管怎样,用缺失的字符来读

将二进制数据(文件)作为IBytesMessage类型发送到MQ。

你应该使用BodyLength来定义字节[]的大小,而不是ReadInt。

更改以下行:

var messageLength = bytesMessage.ReadInt();

:

var messageLength = (int)bytesMessage.BodyLength;

当内容为文本时,ITextMessage逻辑按预期工作。

最新更新