使用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传文件的优先级,低于平常的上传文件的方法,所以仅在必要时使用。

相关文章
后端返回base64格式数据转excel格式文件并下载
后端返回base64格式数据转excel格式文件并下载
244 0
Word转PDF 并转成base64(亲测可用)
Word转PDF 并转成base64(亲测可用)
428 0
|
2月前
|
前端开发
PDF文件上传转成base64编码并支持预览
PDF文件上传转成base64编码并支持预览
136 12
|
人工智能 Java 对象存储
Java获取阿里云图片临时URL与图片文件转换Base64编码方法
在使用阿里云人工智能产品服务时,有部分服务需要上传的参数中包含文件URL,当我们没有开通OSS服务时,可以使用临时URL服务、或部分服务支持Base64编码格式,此文章为生成临时URL-JavaSDK方案与图片文件转换Base64编码方案。
2019 0
pdf.js 怎么预览 base64 类型的 pdf 文件
pdf.js 怎么预览 base64 类型的 pdf 文件
666 0
pdf.js 怎么预览 base64 类型的 pdf 文件
|
4月前
|
存储 JavaScript 前端开发
JS上传文件(base64字符串和二进制文件流)
这篇文章介绍了两种JavaScript文件上传的方法:使用FileReader对象将文件读取为base64字符串上传,以及使用FormData对象以二进制文件流的形式上传文件,包括如何处理文件选择、读取和上传的详细代码示例。
488 2
JS上传文件(base64字符串和二进制文件流)
|
4月前
|
JavaScript 前端开发
JS - 如何上传 Base64 编码的图片
本文展示了如何将Base64编码的图片在前端转换为Blob对象,并使用`FormData`上传到服务器端的方法。
195 0
|
7月前
|
编解码 IDE 开发工具
python ini文件包含中文时报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x8c 的解决办法
python ini文件包含中文时报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x8c 的解决办法
273 1
|
7月前
|
C#
C# 获取文件编码格式
C# 获取文件编码格式
59 0
|
JavaScript
js:通过正则表达式从base64编码的图片中获取扩展名
js:通过正则表达式从base64编码的图片中获取扩展名
300 0