java - 在 Spring 中使用 MultiPartFile 数据类型在 webapp 上上传时重命名文件

标签 java spring spring-mvc

我必须从用户界面上传图像并根据需要更改其名称。

即如果用户上传名为 WIN_20151122_09_57_47_Pro.jpg 的图像,我必须将其更改为 1.jpg

我使用 Spring mvc,对于文件上传和显示,我使用 MultiPartFile 数据类型

下面是模型。

FileBucket.java

package com.faisal.model;

import org.springframework.web.multipart.MultipartFile ;

public class FileBucket {

      MultipartFile file ;

       public MultipartFile getFile() {
             return file ;
      }

       public void setFile(MultipartFile file ) {
             this.file = file;
      }
}

我在服务器上上传文件的 Controller 部分

@Autowired
      ServletContext servletContext;

@RequestMapping(value = "/singleUpload" , method = RequestMethod.POST)
       public String singleFileUpload(@Valid FileBucket fileBucket,
                  BindingResult result, ModelMap model ) throws IOException {

            String PROFILE_UPLOAD_LOCATION = servletContext.getRealPath("/" )
                        + File. separator + "resources" + File.separator
                        + "profile_images" + File.separator;

             if (result .hasErrors()) {
                  System. out.println("validation errors" );
                   return "singleFileUploader" ;
            } else {
                  System. out.println("Fetching file" );
                  String destination=PROFILE_UPLOAD_LOCATION
                              + fileBucket.getFile().getOriginalFilename();

                  File file = new File(destination);
                  File newFile=new File(PROFILE_UPLOAD_LOCATION +"1.jpg" );


                  FileCopyUtils. copy(fileBucket.getFile().getBytes(), file);
                  FileUtils. moveFile(file, newFile);


                  MultipartFile multipartFile = fileBucket .getFile();
                  String fileName = multipartFile .getOriginalFilename();
                   model.addAttribute("fileName" , fileName );
                   return "success" ;
            }
      }

查看页面

<body>
       <div class="success" >

       <img src=" ${pageContext.request.contextPath}/resources/profile_images/${fileName} " height ="100" width="100" />
       <br/>
            File <strong> ${fileName}</strong > uploaded successfully.
       </div>

</body>

在上面的代码中,我已成功重命名该文件,但在同一页面上重定向时,图像未显示,因为它已被 1.jpg 替换

最佳答案

尝试<spring:url>像这样<img src='<spring:url value="/resources/profile-pictures/${user.profileImage}" />' >

这是我如何实现 UserController并在jsp View 中<img src='<spring:url value="/resources/profile-pictures/${user.profileImage}" />' alt="User Image">

关于java - 在 Spring 中使用 MultiPartFile 数据类型在 webapp 上上传时重命名文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36223633/

相关文章:

java - Android万能音乐播放器在MediaItem ViewHolder中添加专辑封面

java - 无法使用 @Autowired 创建 bean

spring - SqlExceptionHelper 日志消息

java - jboss eap-6.1 无法处理部署的 POST_MODULE 阶段\"education.war\"

java - 如何在部署 Java Swing 应用程序时安装 JRE?

java - 如何使 JLable 在鼠标悬停时可见和半透明(几乎不可见)

java - 如何在@Transactional 方法中手动强制提交?

java - 访问动态资源消息

spring - 登录后重定向到包含#(哈希)符号的页面

java - 如何从spring security获取当前登录的用户对象?