我正在通过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";
}
有一些方法可以对base64进行编码和解码,一个好的方法是使用Apache Commons编解码器库或Java base64编码器/解码器。https://www.baeldung.com/java-base64-encode-and-decode
byte[] data = Base64.decodeBase64(base64);
try (OutputStream stream = new FileOutputStream("path to file ")) {
stream.write(data);
}
您可以使用以下命令下载转换为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”失败:要解码的字符串编码不正确 当我在代码中复制并粘贴提取的并转到一个在线解码站点时,它会正确解码。你有什么建议吗?