Springboot、vue有关文件上传下载的问题
把项目部署到服务器上之后,原本能用的功能,如用户头像上传及显示,文件管理部分上传下载文件,出现了一些问题。
用户头像上传下载
由于用户的头像放到了resources/static文件夹下面,上传没有出现问题,但是在vue显示用户头像时找不到用户头像。
以下是我的代码:
File directory = new File("src/main/resources/static/photoFile/");
String filePath = directory.getCanonicalPath();
String downloadPath = filePath + File.separator + saveName;
String contentType;
Path path = Paths.get(downloadPath);
contentType = Files.probeContentType(path);
byte[] data = Files.readAllBytes(Paths.get(downloadPath));
ByteArrayResource resource = new ByteArrayResource(data);
在本地可以获取到这个图片,但是部署到服务器上后找不到这个文件夹。我这里采用的是传统java读取方式,打包后会报错,而打包后的jar文件的目录结构不会从src开始。
修改获取文件流的方法:
String Path = "static/photoFile/" + saveName;
ClassPathResource classPathResource = new ClassPathResource(Path);
InputStream inputStream = classPathResource.getInputStream();
byte[] bytes = new byte[1024];
int b;
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
while ((b = inputStream.read(bytes)) != -1){
byteArrayOutputStream.write(bytes,0,b);
}
byte[] bytesByStream = byteArrayOutputStream.toByteArray();
这样就可以读取到图片了。
文件上传下载
原本的文件上传下载是存放到本地磁盘的指定文件夹下面,部署到服务器后,存放位置没有改,修改文件存放位置,就能够实现上传下载了。但是下载的excel、word打开后会产生报错:文件已损坏,无法打开
这是因为新版office的一种自我保护方式,从网上或者其他地方下载下来的文档无法打开。
解决方法:重新开一个excel文档,点击文件------选项------信任中心------信任中心设置------受保护的视图------把带勾都去掉,然后再打开下载下来的文件,就能够正常打开了。word及ppt同理。