有一种方法可以将输入流转换为字符串,并将其编码为base64,对吗?
在我的函数中,我得到了InputStream参数,需要将其插入到Oracle数据库表的BLOB字段中。
有办法做到吗?
(我的数据库对象包含用于保存图像的字符串字段,但我找不到任何方法将InputStream转换为base 64格式的字符串。)
最简单的方法是使用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();
您可以使用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
有一种很好的方法可以做到这一点,就是使用IOUtils将输入流转换为字节数组。。。
类似于
InputStream is;
byte[] bytes = IOUtils.toByteArray(is);
在这里您可以使用Base64
将Byte 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发送到我的控制器