【问题标题】:Convert String to application/octet-stream Java将字符串转换为应用程序/八位字节流 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 编码。这样就解决了问题..谢谢。

标签: java json inputstream


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多