Как сохранить файл с оригинальным именем в Struts2 при загрузке файла

Мне нужно сохранить загруженный файл с его исходным именем и типом вместо временного имени файла в отдельной папке.

Используя код ниже, я могу получить имя файла и тип, но как я могу изменить временное имя с его исходным именем.

 private File file1;
 private String file1ContentType;
 private String file1FileName;

public File getFile1() {
 return file1;
}
public void setFile1(File file1) {
 this.file1 = file1;
}
public String getFile1ContentType() {
 return file1ContentType;
}
public void setFile1ContentType(String file1ContentType) {
 this.file1ContentType = file1ContentType;
}
public String getFile1FileName() {
 return file1FileName;
}
public void setFile1FileName(String file1FileName) {
 this.file1FileName = file1FileName;
}

public String upld() {      
    File dest = new File("/home/desktop/images/");
    try {

        System.out.println("file1FileName........"+file1FileName);
        System.out.println("file1ContentType........"+file1ContentType);
        System.out.println("file1........"+file1);

       FileUtils.copyFileToDirectory(file1, dest);      
       } catch (Exception e) {

        e.printStackTrace();
       }
       return "success";

    }

С помощью этого кода можно сохранить видео с его временным именем файла, но я хочу сохранить файл с его оригинальным именем и типом….

или же можно переименовать временный файл с его исходным именем перед сохранением в папке

2 ответа

  1. Очередь

    File dest = new File("/home/desktop/images/");
    /*  ...  */
    FileUtils.copyFileToDirectory(file1, dest);      
    

    в

    File dest = new File("/home/desktop/images/" + file1FileName);
    /*  ...  */
    FileUtils.copyFile(file1, dest);
    
  2. Попробуйте ниже кода.

    код jsp:

    <%@ taglib prefix="s" uri="/struts-tags" %>
    <html>
    <head>
    <s:head />
    </head>
    
    <body>
    <h1>Struts 2 file upload example</h1>
    
    <s:form action="resultAction" namespace="/" 
    method="POST" enctype="multipart/form-data">
    
    <s:file name="upload" label="Select a File to upload" size="40" />
    User file :   <s:property value="uploadFileName"></s:property>
    <s:submit value="submit" name="submit" />
    
    </s:form>
    
    </body>
    </html>
    

    Java-код:

    import com.opensymphony.xwork2.ActionSupport;
    
    import java.io.File;
    import java.io.IOException;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.struts2.interceptor.ServletRequestAware;
    
    
    
    public class FileUploadAction extends ActionSupport implements ServletRequestAware {
    
        private File upload;
    
        public File getUpload() {
            return upload;
        }
    
    
        public void setUpload(File upload) {
            this.upload = upload;
        }
    
    
        public String getUploadDocContentType() {
            return uploadDocContentType;
        }
    
    
        public void setUploadDocContentType(String uploadDocContentType) {
            this.uploadDocContentType = uploadDocContentType;
        }
    
    
        private String uploadDocContentType;
    
        public HttpServletRequest request;
        public HttpSession session;
         public String uploadFileName;
        public String getUploadFileName() {
            return uploadFileName;
        }
    
    
        public void setUploadFileName(String uploadFileName) {
            this.uploadFileName = uploadFileName;
        }
    
    
        public String uploadImg() throws IOException{
            String targetPath ="/Desination path/";
            session = request.getSession(true);
            System.out.println("targetPath->"+uploadFileName);
    
    
    
    
            File fileToCreate = new File(targetPath, uploadFileName);
                    try
                    {
                            FileUtils.copyFile(this.upload, fileToCreate);
                    }
                    catch (IOException e) 
                    {
                            addActionError(e.getMessage());
                    }
                    return "success";
        }
    
    
        @Override
        public void setServletRequest(HttpServletRequest request) {
            // TODO Auto-generated method stub
            this.request=request;
    
        }
    
    
    
    }
    

    Подпорки.XML

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
    
    <struts>
    
          <constant name="struts.multipart.maxSize" value="20097152" />
          <constant name="struts.devMode" value="true" />
    
         <package name="default" namespace="/" extends="struts-default ,json-default">
    <action name="resultAction" class="FileUploadAction"  method="uploadImg">
    
            <interceptor-ref name="fileUpload">
                <param name="maximumSize">1024000</param>
    
                <param name="allowedTypes">image/png,image/gif,image/jpeg,image/pjpeg </param>
            </interceptor-ref>
             <interceptor-ref name="basicStack"/>
            <result name="success">/index.jsp</result>
            <result name="input">/index.jsp</result>
    </action>
    </package>
    </struts>