gpt4 book ai didi

java - 通过json内的rest api发送pdf数据

转载 作者:行者123 更新时间:2023-12-02 08:51:05 25 4
gpt4 key购买 nike

我制作了一个网络服务,使用 mutlipart/formdata 发送多个 pdf 作为对客户端的响应,但碰巧其中一个客户端是 salesforce,它不支持 mutlipart/formdata。

他们想要一个 json 响应,例如 -{“文件名”:xyz名称,“文件内容”:文件内容}

我尝试使用 apache 编解码器库以 Base64 编码数据,但客户端的 pdf 似乎已损坏,我无法使用 acrobat 打开它。

请查找下面的代码 -

import org.apache.commons.io.FileUtils;
//------Server side ----------------
@POST
@Consumes(MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Path("somepath")
public Response someMethod(someparam) throws Exception
{
....
JSONArray filesJson = new JSONArray();
String base64EncodedData = Base64.encodeBase64URLSafeString(loadFileAsBytesArray(tempfile));
JSONObject fileJSON = new JSONObject();
fileJSON.put("fileName",somename);
fileJSON.put("fileContent", base64EncodedData);
filesJson.put(fileJSON);
.. so on ppopulate jsonArray...
//sending reponse
responseBuilder = Response.ok().entity(filesJson.toString()).type(MediaType.APPLICATION_JSON_TYPE) ;
response = responseBuilder.build();
}

//------------Client side--------------

Response clientResponse = webTarget.request()
.post(Entity.entity(entity,MediaType.MULTIPART_FORM_DATA));
String response = clientResponse.readEntity((String.class));
JSONArray fileList = new JSONArray(response);
for(int count= 0 ;count< fileList.length();count++)
{
JSONObject fileJson = fileList.getJSONObject(count);
byte[] decodedBytes = Base64.decodeBase64(fileJson.get("fileContent").toString());
outputFile = new File("somelocation/" + fileJson.get("fileName").toString() + ".pdf");
FileUtils.writeByteArraysToFile(outputFile, fileJson.get("fileContent").toString().getBytes());
}

-------------------------------

请多多指教。

最佳答案

是的,问题出在客户端。

解码时我们应该使用

byte[] decodedBytes = Base64.decodeBase64(fileJson.getString("fileContent"));

而不是

byte[] decodedBytes = Base64.decodeBase64(fileJson.get("fileContent").toString());

由于编码的 data.toString() 产生了一些其他想法

还用encodeBase64String替换了encodeBase64URLSafeString嗯,这是一个非常简单的解决方案:)

关于java - 通过json内的rest api发送pdf数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37753083/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com