在上传文件没有格式后,我在文件系统中上传文件时遇到了一些问题。例如,如果我上传.doc格式的文件,上传后不会以他的名字结尾。
这是上传文件的方法
@RequestMapping(value = "/uploadingPageFileForDeputeAppeal", method = RequestMethod.POST)
public String uploadFile(@RequestParam("file") MultipartFile file,
@RequestParam("name") String name,
@RequestParam(value = "id", required = true) int id,
Model model){
LOGGER.debug("Receive request to add file");
if(!file.isEmpty()){
try {
byte [] bytes = file.getBytes();
//Creating the directory to store file
String path = System.getProperty("user.home");
File directory = new File(path + File.separator + "DeputeAppealsFiles");
if(!directory.exists())
directory.mkdirs();
// Create the file on server
File serverFile = new File(directory.getAbsolutePath() + File.separator + name);
BufferedOutputStream stream = new BufferedOutputStream(
new FileOutputStream(serverFile));
stream.write(bytes);
stream.close();
DeputeAppeal deputeAppeal = deputeAppealService.getById(id);
deputeAppealService.editFilePath(deputeAppeal, serverFile.getAbsolutePath());
model.addAttribute("deputeAppealId", deputeAppeal);
} catch (Exception e) {
return "You failed to upload " + file.getName() + " => " + e.getMessage();
}
} else {
return "You failed to upload " + file.getName()
+ " because the file was empty.";
}
return "deputeAppealView/addedFile";
}
有什么想法吗?这是麻烦,因为上传文件后我需要使用标签获取此文件,我认为我无法获取它,因为文件路径保存没有格式,我无法在文件系统中获取
答案 0 :(得分:1)
如果我假设上传的文件没有扩展名,那么请检查您在请求参数名称中传递的内容,因为它用作要存储的文件名。
答案 1 :(得分:1)
您保存名称来自@RequestParam("name") String name
的文件,因此您应该知道您在那里传递的内容。
如果您不想传递带扩展名的名称,可以从MultipartFile获取。你可以这样做:
file.getOriginalFilename().split("\\.")[1]; // it will fail, if there is no extension, so you should add error handling
或根据内容类型找到它:
file.getContentType();