import com.weiming.so.nova.common.utils.uuid.UUID;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Base64;
public class Base64FileUtil {
public static File base64ToFile(String base64code) throws IOException {
String tmpdir = System.getProperty("java.io.tmpdir") + File.separator;
Base64.Decoder decoder = Base64.getDecoder();
String baseValue = base64code.replaceAll(" ", "+");
int ftIdx = baseValue.indexOf(",") + 1;
String fileType = baseValue.substring(0,ftIdx);
String fileContent = baseValue.substring(ftIdx);
String fileSuffix =getBase64FileSuffix(fileType);
String fileName = UUID.randomUUID() + fileSuffix;
byte[] b = decoder.decode(fileContent);
File file = createFile(tmpdir, fileName);
try(OutputStream outputStream = new FileOutputStream(file)){
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
b[i] += 256;
}
}
outputStream.write(b);
outputStream.flush();
}
return file;
}
public static String getBase64FileSuffix(String iden){
if(iden == null || iden.isEmpty()){
return null;
}
if (iden.contains("jpeg")) {
return ".jpg";
}else if(iden.contains("png")){
return ".png";
}else if(iden.contains("gif")){
return ".gif";
}else if(iden.contains("jpg")){
return ".jpg";
}
return null;
}
public static File createFile(String filePaht, String fileName) throws IOException {
File tempFile = new File(filePaht, fileName);
if(!tempFile.getParentFile().exists()){
tempFile.getParentFile().mkdirs();
}
if(!tempFile.exists()){
tempFile.createNewFile();
}
return tempFile;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗