前端(Angular)
DocumentLooking(data) {
//判断是否是PDF文件
let suffix = data.file_suffix;
if (suffix != 'pdf') {
this.modal.warning({
nzTitle: '文件预览',
nzContent: '暂不支持预览此格式的文件!'
});
return;
}
this.downloading = true;
this.apiService.fileDownload({fileId: data.fileId}).subscribe((res : any) => {
if (res.code === '0') {
const btr = atob(res.data);
var n = btr.length;
var u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
var pdfUrl = window.URL.createObjectURL( new Blob([u8arr],{type: 'application/pdf}));
window.open(pdfUrl);
} else {
}
})
}
后端(base64code)
public String fileDownload(Integer fileId) throws Exception {
FileBaseInfo fileData = fileQueryDao.getFileInfo(fileId);
//获取文件路径
String filePath = rootPath + fileData.getFilePath();
String fileName = fileData.getFileName();
String fileSufix = fileData.getFileSufix();
//创建文件
File file = new File(filePath,fileName+"."+fileSufix);
//判断文件存在与否
FileInputStrram inputStream = null;
try{
inputStream = new FileInputStream(file);
byte[] bytes = filetoBinary(inputStream);
return new String(encodeBase64(bytes),StandardCharsets.UTF_8)
} catch (E e) {
throw e;
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOE e) {
e.printStackTrace;
}
}
}
}
private static byte[] fileToBinary(InputStream in) throws E {
ByteArrayOutStream out = new ByteArrayOutStream();
try {
byte[] buffer = new byte[1024];
int len = 0;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0 , len);
}
} catch (){
throw e;
} finally {
if (in != null) {
in.close();
}
}
if (out != null) {
return out.toByteArray();
} else {
return null;
}
}