Java 使用React将二进制流转换为BASE64
如何将Java中的ByteArrayInputStream编码为Blob或BASE64 java.io。ByteArrayInputStream@584e2317 我的Java代码:Java 使用React将二进制流转换为BASE64,java,reactjs,Java,Reactjs,如何将Java中的ByteArrayInputStream编码为Blob或BASE64 java.io。ByteArrayInputStream@584e2317 我的Java代码: Connection con = DriverManager.getConnection(url, props); final PreparedStatement stmt = con.prepareStatement("SELECT * FROM \"sg_Images\&
Connection con = DriverManager.getConnection(url, props);
final PreparedStatement stmt = con.prepareStatement("SELECT * FROM \"sg_Images\".\"Images\" ");
ResultSet rs = stmt.executeQuery();
JSONArray array = new JSONArray();
while (rs.next()) {
JSONObject obj = new JSONObject();
obj.put("Bild", rs.getBinaryStream("foto"));
obj.put("Datum", rs.getDate("datum"));
array.put(obj);
}
response.setContentType("application/json");
ServletOutputStream out = response.getOutputStream();
out.print(array.toString());
out.flush();
out.close();
rs.close();
stmt.close();
con.close();
最简单的解决方案是读取
InputStream
并获得所需的字符串
基于,添加此方法:
private String getContent(InputStream inputStream) throws IOException{
StringBuilder textBuilder = new StringBuilder();
// Please do not forget to change the charset
// if you are not using UTF8
try (Reader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) {
int c = 0;
while ((c = reader.read()) != -1) {
textBuilder.append((char) c);
}
return textBuilder.toString();
}
}
…并在构建JSON数组时调用它
obj.put("Bild", getContent(rs.getBinaryStream("foto")));
请注意,这可能不是一个好主意,以这种方式发送所有的blob如果是大的
您还可以在上找到有趣的解决方案最简单的解决方案是读取InputStream
并获得所需的字符串
基于,添加此方法:
private String getContent(InputStream inputStream) throws IOException{
StringBuilder textBuilder = new StringBuilder();
// Please do not forget to change the charset
// if you are not using UTF8
try (Reader reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))) {
int c = 0;
while ((c = reader.read()) != -1) {
textBuilder.append((char) c);
}
return textBuilder.toString();
}
}
…并在构建JSON数组时调用它
obj.put("Bild", getContent(rs.getBinaryStream("foto")));
请注意,这可能不是一个好主意,以这种方式发送所有的blob如果是大的
您还可以在上找到有趣的解决方案。您似乎隐式或显式地执行了一个ByteArrayInputStream.toString()
,并在响应中发送结果字符串,而不是字节数组本身。您可以将Java代码添加到您的问题中吗?@C.com我的问题我的回答对您有帮助吗?您似乎隐式或显式地通过tearrayinputstream.toString()执行,并在响应中发送结果字符串,而不是字节数组本身。您可以将Java代码添加到您的问题中吗?@C.com我的问题我的回答对您有帮助吗?