将字符串转换为应用程序/八位字节流 Java

Posted

技术标签:

【中文标题】将字符串转换为应用程序/八位字节流 Java【英文标题】:Convert String to application/octet-stream Java 【发布时间】:2015-09-16 18:19:31 【问题描述】:

我正在编写一个带有嵌入码头的服务器端应用程序,它接收来自第三方客户端的一些请求。客户端上传一些小文件到服务器。但令我惊讶的是,客户端没有将文件数据上传为 application/octet-stream,而是将 json 作为 application/json 上传,其中包括有关文件的所有元数据,并在字段中将所有数据作为字符串上传。举个简单的例子

"_id": "水果", “名称”:“水果”, "_shasum": "4954f1f8b4a8cbf9ea6b675face476f030cf7fbb", "tarball": "http://localhost:8585/fruit/-/fruit-2.0.0.tgz", “_附件”: “水果2.0.0.tgz”: “content_type”:“应用程序/八位字节流”, “数据”:“mF6/622swKoG0kbVvS8qCyF5r48CuyiCO60Mcl/LnOyufzAEZ5xxxhn/IT4DO4Fr4QAMAAAA=”, “长度”:545

现在的问题是如何将其转换为 .tgz 文件?我无法更改客户端,所以我必须使用它。

【问题讨论】:

您无法将其转换为文件。要么您尝试接收错误的文件,要么客户端损坏并发送错误数据。 我不这么认为。当我上传时,我只收到一个请求,这就是我正在获取的数据。所以文件中没有错误。随着客户端上传数据,我认为客户端也没有损坏。并且同一个客户端使用相同的技术与它的默认服务器一起工作 - 这是用 js 编写的。 哦,对了,我错过了 base64 编码的数据。我以为你在使用 HTTP。好吧,如果这是全部数据,您可以解码并保存它。你知道如何使用 Base64,对吧? 是的,我愿意。我也忘记了 Base64 编码。这样就解决了问题..谢谢。 【参考方案1】:

刚刚使用 JSON 解析器得到了字符串

byte[] decoded = Base64.getDecoder().decode(data);
InputStream stream = new ByteArrayInputStream(decoded);

【讨论】:

以上是关于将字符串转换为应用程序/八位字节流 Java的主要内容,如果未能解决你的问题,请参考以下文章

将八位字节流转换为图像

AJAX - 将返回的八位字节流转换为类型化数组 (Float64Array)

XLSX 客户端从后端 api 响应中保存:二进制字符串、应用程序/八位字节流

Spring Boot - RabbitMQ - 将消息内容类型从八位字节流更改为 json

无法将应用程序/八位字节流解析为节点 js 中的图像

从手机上传文件发送应用程序/八位字节流