当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Boot(Java)中解码base64中的文件?

越伯寅
2023-03-14

我正在通过web服务将文件从前端(Angular)发送到后端(Java)。如何在Spring Boot中解码文件?

这是我在Angular中的代码:(用base64编码文件)在一个带有3个参数(base64、名称、大小)的函数中

readAndUploadFile(theFile: any) {
    let file = new FileModel();
    
    // Set File Information
    file.fileName = theFile.name;
    file.fileSize = theFile.size;
    file.fileType = theFile.type;
    file.lastModifiedTime = theFile.lastModified;
    file.lastModifiedDate = theFile.lastModifiedDate;
    
    // Use FileReader() object to get file to upload
    // NOTE: FileReader only works with newer browsers
    let reader = new FileReader();
    
    // Setup onload event for reader
    reader.onload = () => {
        // Store base64 encoded representation of file
        file.fileAsBase64 = reader.result.toString();
        
        // POST to server
        this.uploadService.uploadFile(file.fileAsBase64,file.fileName,file.fileSize).subscribe(resp => { 
         
            this.messages.push("Upload complete");
            console.log("tst",resp); });
    }
    
    // Read the file
    reader.readAsDataURL(theFile);
} 


uploadFile(): void {
  this.readAndUploadFile(this.theFile);
} 

我在后端的代码:

@RequestMapping("/UploadFile")
public String uploadFile(String base64, String name, String size) throws Exception {
 
    return "true";
}

共有3个答案

吕英豪
2023-03-14

有一些方法可以对base64进行编码和解码,一个好的方法是使用Apache Commons编解码器库或Java base64编码器/解码器。https://www.baeldung.com/java-base64-encode-and-decode

吕承福
2023-03-14
byte[] data = Base64.decodeBase64(base64);
try (OutputStream stream = new FileOutputStream("path to file ")) {
    stream.write(data);
}
潘雅珺
2023-03-14

您可以使用以下命令下载转换为Base64格式的文件。

@RequestMapping(value = "/UploadFile")
public String uploadFile(HttpServletResponse response String base64, String name, String size) throws Exception {
    byte[] decodedFile = Base64.getDecoder().decode(base64.getBytes(StandardCharsets.UTF_8));
    response.setContentType("application/octet-stream");
    response.setHeader("Content-Disposition", "attachment; filename=" + name);
    response.setHeader("Pragma", "no-cache");
    response.setHeader("Cache-Control", "no-cache");

    InputStream is = new ByteArrayInputStream(decodedFile);
    IOUtils.copy(is, response.getOutputStream());
    response.flushBuffer();
    return "true";
}
 类似资料:
  • new String(..)转字符串的时候是怎么知道 -28, -72, -83 为一组的呢? 是字符编码有什么规则吗?( 0x**---- ,(byte) ** 是负数的就是3个字节一组这样?)

  • 问题内容: 我有一个带有以下标头的Base64编码的对象: 解码对象的最佳方法是什么?我需要去除第一行吗?另外,如果将其转换为字节数组(byte []),如何解压缩它? 谢谢! 我想我起初很miss。通过说标题是 我的意思是这是文件的第一行。因此,为了使用Java或C#库解码文件,是否需要删除这一行? 如果是这样,剥离第一行的最简单方法是什么? 问题答案: 我能够使用以下代码将.xfdl文档转换为

  • 问题内容: 如何用Java解码Base64数据? 问题答案: 从v6开始,Java SE随JAXB一起提供。javax.xml.bind.DatatypeConverter有静态方法可以简化这一过程。 请参阅parseBase64Binary()和printBase64Binary()。 从Java 8开始,已经有官方支持的用于Base64编码和解码的API。随着时间的流逝,它可能会成为默认选择。

  • 问题内容: 我需要使用Java中的Base64编码对一些数据进行编码。我怎么做?提供Base64编码器的类的名称是什么? 我试图使用该类,但没有成功。我有以下几行Java 7代码: 我正在使用Eclipse。Eclipse将此行标记为错误。我导入了所需的库: 但是同样,它们两个都显示为错误。我在这里找到了类似的帖子。 我使用Apache Commons作为建议的解决方案,包括: 并导入从http:

  • 问题内容: 我已经使用iOS7中添加的Class new API 编码了text()。 使用这个 这是我的代码 我正在寻找解码 问题答案: 编码方式 解码 迅捷<3 编码方式 解码 目标C 编码方式 解码

  • 我收到一个作为当前href的一部分。它是用base64编码的。我尝试使用对其进行解码,但得到以下错误: 在“window”上执行“atob”失败:要解码的字符串编码不正确 当我在代码中复制并粘贴提取的并转到一个在线解码站点时,它会正确解码。你有什么建议吗?