首页 > 解决方案 > 在 Spring 中上传后更改视频文件(重新上传文件)

问题描述

这是我将视频文件上传到服务器的代码。上传完成后,用户可以在“审核”页面查看上传的文件。当用户上传另一个视频文件并重定向到“评论”页面时,用户看到的是之前添加的文件,而不是新文件。我该如何解决?

控制器.java

@RequestMapping(value = "/vid-submit")
public String saveVideoData(@RequestParam("answer-file") MultipartFile multipartFile) throws IOException {
    User user = getUser();
    SurveyRecords surveyRecord = surveyRecordsRepository.getSingleDataByUserId(user.getUserId());
    
    String filename = StringUtils.cleanPath(multipartFile.getOriginalFilename());
    
    String fileExt = "";
    int i = -1;
    if(( i = filename.indexOf(".")) != -1){
        fileExt = filename.substring(i);
    }
    
    filename = user.getUserId() + fileExt;
    
    String uploadDir = "src/main/resources/static/content/videos";
    FileUploadUtil.saveFile(uploadDir, filename, multipartFile);
    
    if (surveyRecord == null) {
        SurveyRecords newSurveyRecord = new SurveyRecords();
        newSurveyRecord.setVideo(filename);
        newSurveyRecord.setUser(user);
        surveyRecordsRepository.save(newSurveyRecord);
    } else {
        surveyRecord.setVideo(filename);
        surveyRecord.setUser(user);
        surveyRecordsRepository.save(surveyRecord);
    }
    return "redirect:/review";
}

文件上传工具.java

public static void saveFile(String uploadDir, String fileName,
        MultipartFile multipartFile) throws IOException {
    Path uploadPath = Paths.get(uploadDir);
     
    if (!Files.exists(uploadPath)) {
        Files.createDirectories(uploadPath);
    }
     
    try (InputStream inputStream = multipartFile.getInputStream()) {
        Path filePath = uploadPath.resolve(fileName);
        Files.copy(inputStream, filePath, StandardCopyOption.REPLACE_EXISTING);
    } catch (IOException ioe) {        
        throw new IOException("Could not save video file: " + fileName, ioe);
    }      
}

标签: springfilevideouploadmultipart

解决方案


推荐阅读