使用Base64实现文件编码和上传

简介: 你好看官,里面请!今天笔者讲的是使用Base64实现文件编码和上传。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。

使用Base64实现文件编码和上传

在开发上传图片的时候,我们用的是通过post请求。其实还有另外的方式可以实现图片传输。那么如何通过字符串来传输一个图片或者文档呢?就可以用Base64来实现。

流程

输入的,是二进制文件,比如图片、文档等。在经过base64之后,输出的是编码后的字符串。然后我们直接把经过转码后的字符串,放到请求中去就可以了,服务端在接收到之后,可以进行解码,然后就可以还原出这个文件的信息。

原理

把二进制数据,转为字符串,以便于在一些只支持传输文本的通信协议中传输数据。

编码和解码在线网站 https://www.base64decode.org/

解码的代码示例

前端上传图片时,会把图片用base64编码,然后把这个字符串包含在请求中,可以是get请求的url后面,或者是post请求的body里,然后后端接收到,进行解码。

编码示例:

把文件编码为base64字符串的示例:

publicstaticStringfileToBase64(StringfilePath) {
if (filePath==null) {
returnnull;
    }
byte[] fileContent=newbyte[0];
try{
fileContent=Files.readAllBytes(Paths.get(filePath));
    } catch (IOExceptione) {
e.printStackTrace();
Stringresult=Base64.getEncoder().encodeToString(fileContent);
returnresult;

使用示例:

String base64String =Base64Service.fileToBase64("/Users/didi/Desktop/my.jpg");

解码代码示例:

/**描述:Base64Service*/publicclassBase64Service{
publicstaticvoidmain(String[] args) {
Base64Service.base64Tolmage(“ROIGODIhAQABAIAAAAUEBAAAACWAAAAAAQABAAACAKQBADs=");    }
publicstaticBooleanbase64Tolmage(Stringbase64String){ 
booleanempty=StringUtils.isEmpty(base64String);
if (empty){ 
returnfalse; 
    }
byte[] decode=Base64.getDecoder().decode(base64String);
try (OutputStreamstream=newFileOutputStream("/Users/apple/Desktop/my.jpg")){ 
stream.write(decode);
returntrue;
    } catch (FileNotFounndExceptione){
e.printStackTrace(); 
returnfalse;
    } catch (IOExceptione) { 
e.printStackTrace(); 
returnfalse;
    }
}
}

在这个示例中,“ROIGODIhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=”代表一个1像素的黑色图片,然后我们通过Base64.getDecoder(), decode(base64String)把它进行解码,并写入到文件。

注意事项

只适用于小文件,使用base64传文件的优先级,低于平常的上传文件的方法,所以仅在必要时使用。

相关文章
|
2月前
|
前端开发
前端base64转Blob,Blob转文件下载
前端将base64字符串转换为Blob对象,再将Blob对象转换为文件并实现下载。包括处理数据URL和纯base64字符串的情况,并提供了一个辅助函数用于转换。
55 2
|
6月前
base64 excel类型base64转html在线显示
base64 excel类型base64转html在线显示
58 0
|
6月前
|
XML JavaScript 数据格式
python - bs4提取XML/HTML中某个标签下的属性
python - bs4提取XML/HTML中某个标签下的属性
67 0
|
6月前
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
125 0
|
JavaScript
js:通过正则表达式从base64编码的图片中获取扩展名
js:通过正则表达式从base64编码的图片中获取扩展名
288 0
|
前端开发 JavaScript 数据安全/隐私保护
前端通过Blob或File文件获取二进制数据
前端通过Blob或File文件获取二进制数据
前端通过Blob或File文件获取二进制数据
|
应用服务中间件 PHP nginx
php实现img转ASCII编码图片
php实现img转ASCII编码图片
122 0
php实现img转ASCII编码图片
|
JavaScript PHP
php和js中,utf-8编码转成base64编码
1、php下转化base64编码 php中,文本文件的编码决定了程序变量的编码,比如以下代码在不同编码的php文件中,展示的效果也是不一样的 如果文本文件是utf-8,则输出结果为:5Lil,而在gbk文件中的输出结果是:0c8= 注意:php中转换成base64编码时,和网页编码没有关系。
1669 0
|
存储 缓存 数据库
Confluence 6 从 WIKI 标记整合到基于 XHTML 的存储格式
如果你现在正在将 Confluence 从一个老的版本升级到 Confluence 4.0 或者更新的版本 (例如从 Confluence 3.5.x 或者更老的版本),在升级的过程中一个内容整合过程也会进行。
1098 0