Java后台如何接收app用base64编码后的文件字节流(图片和视频都可以使用此方法)

原因:服务器端接收的Android传过来的字符串时会把“+”替换成空格,加号(+)是BASE64编码的一部分,而加号在后台接收时被当成是空格。 

处理办法是:解码前,先把空格替换成“+”

import sun.misc.BASE64Decoder;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.UUID;

public class UploadImageByteArray {
    public static String uploadImg(String base64String) {
        try {
            base64String = base64String.replace(" ", "+");
            BASE64Decoder decoder = new sun.misc.BASE64Decoder();
            byte[] bytes1 = decoder.decodeBuffer(base64String);
            //生成图片名称
            String imageUrl = UUID.randomUUID().toString().replace("-", "") + ".jpg";
            String path = "f://";
            for (int i = 0; i < bytes1.length; i++) {
                if (bytes1[i] < 0) {
                    //调整异常数据
                    bytes1[i] += 256;
                }
            }
            File file = new File(path, imageUrl);
            if (!file.exists()) {
                file.createNewFile();
            }
            FileOutputStream out = new FileOutputStream(file);
            out.write(bytes1);
            out.flush();
            out.close();
            return imageUrl;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

 

你可能感兴趣的:(java后台)