使用base64上传文件

2016-03-22 / 6 阅读 / Android

Base64主要把一些二进制数转成普通字符用于网络传输。当然也可以用于加密,只是加密的目的不是为了安全。这种加密方式主要就是“防君子不防小人。我这次的目的主要是记录一下用base64来做小文件或图片的上传。
base64是一种编码方式,将3字节(3*8=24比特)的数据按6比特重新分组,分成4组,变成4字节的数据(字节的高位用0填充)
听着好像挺玄乎的,其实也就那么回事,等以后有时间了去研究的如何编码的。这里直接了解用法。

java端的简单例子

        //图片
        FileInputStream inputStream = new FileInputStream("D:\\111.jpg");
        //转成字节数组
        byte[] bytes = new byte[inputStream.available()];
        inputStream.read(bytes);
        inputStream.close();
        //base64编码,这边用的是sun.misc.BASE64Encoder这个类
        BASE64Encoder base64Encoder = new BASE64Encoder();
        String encode = base64Encoder.encode(bytes);
        //输出编码后的字符串
        System.out.println(encode);

        //解码为字节数组
        BASE64Decoder base64Decoder = new BASE64Decoder();
        byte[] bytes1 = base64Decoder.decodeBuffer(encode);
        //输出文件
        FileOutputStream fileOutputStream = new FileOutputStream("D:\\222.jpg");
        fileOutputStream.write(bytes1);
        fileOutputStream.close();

以上是java端的代码,因为最近涉及到安卓端上传图片问题,顺便看了下安卓端。android studio的默认java库中是没有sun.misc.BASE64Encoder,需要自己去依赖。不过安卓也提供了android.util.Base64这个类,效果是一样的。不过用法是有差异的。
如下:
对同一字符串加密:

android.util.Base64

sun.misc.BASE64Encoder

android.util.Base64分别设置Base64.DEFAULT和Base64.NO_WRAP参数后出现

以下差异,多了“\n”

因此以后这方面可以留个心

相关推荐