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

将字符串转换为应用程序/八位字节流Java,java,json,inputstream,Java,Json,Inputstream,我正在编写一个带有嵌入式jetty的服务器端应用程序,它接收来自第三方客户机的一些请求。客户端将一些小文件上传到服务器。但我惊讶地看到,客户端没有将文件数据作为application/octet流上传,而是将json作为application/json上传,其中包含关于文件的所有元数据,并将所有数据作为字符串上传到字段中。举个简单的例子 { “_id”:“水果”, “名称”:“水果”, “_shasum”:“4954f1f8b4a8cbf9ea6b675face476f030cf7fbb”, “

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

{ “_id”:“水果”, “名称”:“水果”, “_shasum”:“4954f1f8b4a8cbf9ea6b675face476f030cf7fbb”, “柏油球”:http://localhost:8585/fruit/-/水果-2.0.0.tgz“, “_附件”:{ “水果-2.0.0.tgz”:{ “内容类型”:“应用程序/八位字节流”, “数据”:“mF6/622SWKOG0KBVS8QCYF5R48CuYICO60MCL/LNOYUFZAEZ5XXHN/IT4DO4FR4QAMAA=”, “长度”:545 }}}


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

刚刚使用JSON解析器获得字符串

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

您无法将其转换为文件。要么你试图接收错误的文件,要么客户端坏了,发送了错误的数据。我不这么认为。当我上传时,我只收到一个请求,那就是我正在获取的数据。所以文件中没有错误。当客户端上传数据时,我认为客户端也没有崩溃。同一个客户机使用相同的技术与Deafolt服务器一起工作——这是用js编写的。哦,对了,我错过了base64编码的数据。我以为你在使用HTTP。如果这就是全部数据,你可以解码并保存它。你知道怎么用Base64,对吧?是的,我知道。我还忘记了Base64编码。这就解决了问题。。非常感谢。