Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用React将二进制流转换为BASE64_Java_Reactjs - Fatal编程技术网

Java 使用React将二进制流转换为BASE64

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\&

如何将Java中的ByteArrayInputStream编码为Blob或BASE64

java.io。ByteArrayInputStream@584e2317

我的Java代码:

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我的问题我的回答对您有帮助吗?