在文件系统Ubuntu中上传文件后,文件没有格式

时间:2016-07-19 18:50:38

标签: java

在上传文件没有格式后,我在文件系统中上传文件时遇到了一些问题。例如,如果我上传.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";
    }

有什么想法吗?这是麻烦,因为上传文件后我需要使用标签获取此文件,我认为我无法获取它,因为文件路径保存没有格式,我无法在文件系统中获取

2 个答案:

答案 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();