java
@GetMapping("/t8")
public void down2(HttpServletResponse response) throws Exception {
response.reset();
response.setContentType("application/octet-stream;charset=utf-8");
response.setHeader(
"Content-disposition",
"attachment; filename=222.mp4");
Base64.Decoder DECODER_64 = Base64.getDecoder();
//存照片
String s = Base64Utils.fileToBase64Str(new File("C:\\Users\\Harbor\\Pictures\\Camera Roll\\222.mp4"));
byte[] bytes = DECODER_64.decode(s);
try(
// 输出流
BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());
){
bos.write(bytes);
}
}
public static void main(String[] args) {
File file = new File("C:\\Users\\Harbor\\Pictures\\Camera Roll\\222.mp4");
System.out.println(file.getName());
System.out.println(file.getParent());
System.out.println(file.getParentFile());
}
工具类
java
package com.atguigu.yygh.cmn.controller;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import java.util.Base64;
public class Base64Utils {
// Base64 编码与解码
private static final Base64.Decoder DECODER_64 = Base64.getDecoder();
private static final Base64.Encoder ENCODER_64 = Base64.getEncoder();
// dpi越大转换后的图片越清晰,相对转换速度越慢
private static final Integer DPI = 200;
// 编码、解码格式
private static final String CODE_FORMATE = "UTF-8";
/**
* 1. text明文 转 Base64字符串
* @param text 明文
* @return Base64 字符串
*/
public static String textToBase64Str(String text) {
if (StringUtils.isBlank(text)) {
return text;
}
String encodedToStr = null;
try {
encodedToStr = ENCODER_64.encodeToString(text.getBytes(CODE_FORMATE));
} catch (UnsupportedEncodingException e) {
e.getMessage();
}
return encodedToStr;
}
/**
* 2. text的Base64字符串 转 明文
* @param base64Str text的Base64字符串
* @return text明文
*/
public static String base64StrToText(String base64Str) {
if (StringUtils.isBlank(base64Str)) {
return base64Str;
}
String byteToText = null;
try {
byteToText = new String(DECODER_64.decode(base64Str), CODE_FORMATE);
} catch (UnsupportedEncodingException e) {
e.getMessage();
}
return byteToText;
}
/**
* 3. 文件(图片、pdf) 转 Base64字符串
* @param file 需要转Base64的文件
* @return Base64 字符串
*/
public static String fileToBase64Str(File file) throws IOException {
String base64Str = null;
FileInputStream fin = null;
BufferedInputStream bin = null;
ByteArrayOutputStream baos = null;
BufferedOutputStream bout = null;
try {
fin = new FileInputStream(file);
bin = new BufferedInputStream(fin);
baos = new ByteArrayOutputStream();
bout = new BufferedOutputStream(baos);
// io
byte[] buffer = new byte[1024];
int len = bin.read(buffer);
while(len != -1){
bout.write(buffer, 0, len);
len = bin.read(buffer);
}
// 刷新此输出流,强制写出所有缓冲的输出字节
bout.flush();
byte[] bytes = baos.toByteArray();
// Base64字符编码
base64Str = ENCODER_64.encodeToString(bytes).trim();
} catch (IOException e) {
e.getMessage();
} finally{
try {
fin.close();
bin.close();
bout.close();
} catch (IOException e) {
e.getMessage();
}
}
return base64Str;
}
/**
* 4. Base64字符串 转 文件(图片、pdf) -- 多用于测试
* @param base64Content Base64 字符串
* @param filePath 存放路径
*/
public static void base64ContentToFile(String base64Content, String filePath) throws IOException{
BufferedInputStream bis = null;
FileOutputStream fos = null;
BufferedOutputStream bos = null;
try {
// Base64解码到字符数组
byte[] bytes = DECODER_64.decode(base64Content);
ByteArrayInputStream byteInputStream = new ByteArrayInputStream(bytes);
bis = new BufferedInputStream(byteInputStream);
File file = new File(filePath);
File path = file.getParentFile();
if(!path.exists()){
path.mkdirs();
}
fos = new FileOutputStream(file);
bos = new BufferedOutputStream(fos);
// io
byte[] buffer = new byte[1024];
int length = bis.read(buffer);
while(length != -1){
bos.write(buffer, 0, length);
length = bis.read(buffer);
}
// 刷新此输出流,强制写出所有缓冲的输出字节
bos.flush();
} catch (IOException e) {
e.getMessage();
}finally{
try {
bis.close();
fos.close();
bos.close();
} catch (IOException e) {
e.getMessage();
}
}
}
// 测试
public static void main(String args[]) throws IOException {
// 1.测试:text明文 转 Base64字符串
String s = fileToBase64Str(new File("C:\\Users\\Harbor\\Pictures\\Camera Roll\\111.jpg"));
System.out.println(s);
base64ContentToFile(s,"C:\\Users\\Harbor\\Pictures\\Camera Roll\\232.jpg");
}
}