当前位置: 首页 > 知识库问答 >
问题:

将InputStream转换为base64字符串

汪晨
2023-03-14

有一种方法可以将输入流转换为字符串,并将其编码为base64,对吗?

在我的函数中,我得到了InputStream参数,需要将其插入到Oracle数据库表的BLOB字段中。

有办法做到吗?

(我的数据库对象包含用于保存图像的字符串字段,但我找不到任何方法将InputStream转换为base 64格式的字符串。)

共有3个答案

郑星雨
2023-03-14

最简单的方法是使用apache commons中的IOUtils来实现这一点:

String result= IOUtils.toString(inputStream, ENCODING); 

根据文件:

toString(字节[]输入,字符串编码)使用指定的字符编码将字节[]的内容作为字符串获取。

之后在Base64中编码/解码:

// Encode 
String resultBase64Encoded = Base64.getEncoder().encodeToString(result.getBytes("utf-8"));


// Decode
byte[] asBytes = Base64.getDecoder().decode(resultBase64Encoded);
String resultAsStringAgain= String(asBytes, "utf-8")

注意:我假设您使用JDK 8进行编码/解码部分。

显然,OP只想将InputStream持久化到DB。您可以直接使用JDBC实现这一点:

InputStream inputStream = ......;
String sql = "INSERT INTO TABLE_NAME(COLUMN_NAME) values (?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setBlob(1, inputStream);
statement.executeUpdate();
任昊苍
2023-03-14

您可以使用Base64 API尝试类似的操作。

InputStream finput = new FileInputStream(file);
byte[] imageBytes = new byte[(int)file.length()];
finput.read(imageBytes, 0, imageBytes.length);
finput.close();
String imageStr = Base64.encodeBase64String(imageBytes);

使用此选项:

http://commons.apache.org/proper/commons-codec/archives/1.9/apidocs/org/apache/commons/codec/binary/Base64.html

壤驷阳冰
2023-03-14

有一种很好的方法可以做到这一点,就是使用IOUtils将输入流转换为字节数组。。。

类似于

    InputStream is;
    byte[] bytes = IOUtils.toByteArray(is);

在这里您可以使用Base64Byte Array转换为String

示例代码

    String encoded = Base64.getEncoder().encodeToString(bytes);

现在您可以使用您的String

 类似资料:
  • 问题内容: 我需要将base64编码字符串转换为ArrayBuffer。base64字符串是用户输入的字符串,它们将通过电子邮件进行复制和粘贴,因此在加载页面时它们不存在。我想在javascript中做到这一点,如果可能的话,不向服务器进行ajax调用。 这看起来不错,但我不知道如何使用代码。 有没有简单的方法(也许是本地方法)进行转换?谢谢 问题答案: 尝试这个:

  • 问题内容: 我将 图片获取 为base64字符串( ) ,下面是将转换为图片的函数, 现在,如果图像为png,则png库将创建图像,而jpg库将引发错误,反之亦然。 问题是当我上传png时效果很好,但是当我 上传jpg文件时 返回此错误 无效的JPEG格式:缺少SOI标记 输入为: 这可能有帮助 问题答案: 您将您的传递给,这开始消耗阅读器,只是发现输入不是有效的PNG,因此返回错误。 然后,将部

  • Im能够将转换为base64。但现在我正在尝试将其转换回并存储在中 编辑%1;首先感谢大家,我已经尝试了以下所有的解决方案,它们都起作用了。但是我有多个图像,如果中没有图像怎么办?

  • 我需要将base64编码字符串转换为ArrayBuffer。base64字符串是用户输入,它们将从电子邮件中复制和粘贴,因此当页面加载时它们不在那里。如果可能的话,我希望在javascript中完成此操作,而不需要对服务器进行ajax调用。 我发现这些链接很有趣,但它们对我没有帮助:

  • 问题内容: 我正在尝试使用jQuery插件即crop.js裁剪/调整用户个人资料图像的大小,该插件通过ajax将用户图像作为base64发送给我的控制器 但我无法解码此base64 字符串作为图像,你们可以指导我如何将base64字符串作为图像保存在服务器上吗? 问题答案: 假设有几件事,您知道输出文件名是什么,并且您的数据以字符串形式出现。我确定您可以修改以下内容以满足您的需求: 请注意,这只是

  • 我正在尝试使用jquery插件裁剪/调整用户配置文件图像的大小,即crop.js,它将用户图像作为base64通过ajax发送到我的控制器