You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SoapUI中通过REST服务上传LZMA文件时的文件损坏问题

问题分析与解决方案

问题原因

核心问题出在mockRequest.requestContent的使用逻辑上:

  • 这个属性会把请求的二进制内容以字符串形式读取,但LZMA这类二进制文件包含大量非可打印字符或不符合默认字符编码(通常是UTF-8)的字节。
  • 当二进制数据被转成字符串时,无效的字节序列会被替换成占位符(比如�),再通过getBytes()转回字节数组时,这些占位符对应的字节和原数据不一致——虽然文件大小看似没变,但关键字节已被篡改,破坏了LZMA的压缩结构,导致无法解压。

解决方案

直接读取请求的原始输入流,完全跳过字符串转换环节,用以下Groovy脚本替换原有保存逻辑:

def inputStream = mockRequest.requestInputStream
def outputFile = new File("C:/test/new_container.tar.lzma")
outputFile.withOutputStream { out ->
    out << inputStream
}
log.info "File saved successfully"

补充说明

  • 该脚本直接将请求的原始二进制输入流写入文件,保证字节1:1还原,彻底避免编码转换导致的损坏。
  • 上传时保持Content-Type: application/octet-stream即可,这个类型明确告知服务端接收的是纯二进制数据,无需额外解析。

内容的提问来源于stack exchange,提问作者Sumsar1812

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 21:03:10