檔案上傳(三)

來源:互聯網
上載者:User

使用struts2實現上傳,代碼將更簡單

 

上傳頁面upload.jsp,action類UploadAction.java

 

 

upload.jsp(上傳多個檔案)

 

<body>
  <s:form action="upload" method="post" enctype="multipart/form-data">
   <table align="center" width="60%" border="1">
    <tr>
     <td>
      username
     </td>
     <td>
      <s:textfield name="username" />
     </td>

    </tr>

    <tr>
     <td>
      password
     </td>
     <td>
      <s:password name="password"></s:password>
     </td>

    </tr>

    <tr>
     <td>
      file
     </td>
     <td id="more">
      <s:file name="file"></s:file>
      <input type="button" value="add more..." onclick="addmore()" />
     </td>

    </tr>
    <tr>
     <td colspan="2">
      <s:submit></s:submit>
     </td>
    </tr>
   </table>
  </s:form>
 </body>

 

UploadAction.java

public class UploadAction extends ActionSupport {
 
 private String username;
 
 private String password;

 //上傳多個檔案,屬性放入list中
 private List<File> file;
 
 //以下兩屬性對應struts jar包中類FileUploadInterceptor.class中(254行)
 private List<String> fileFileName;

 private List<String> fileContentType;

 public String execute() throws Exception {

  for (int i = 0; i < file.size(); i++) {
   
   //上傳檔案傳入輸入資料流
   InputStream is = new FileInputStream(file.get(i));
   
   //指定上傳路徑
   String root = ServletActionContext.getRequest().getRealPath(
     "/upload");
   
   
   File destFile = new File(root, this.getFileFileName().get(i));
   
   OutputStream os = new FileOutputStream(destFile);

   byte[] buffer = new byte[400];

   int length = 0;

   while ((length = is.read(buffer)) > 0) {
    os.write(buffer, 0, length);
   }
   is.close();
   os.close();
  }
  return SUCCESS;

 }

 public String getUsername() {
  return username;
 }

 public void setUsername(String username) {
  this.username = username;
 }

 public String getPassword() {
  return password;
 }

 public void setPassword(String password) {
  this.password = password;
 }

 public List<File> getFile() {
  return file;
 }

 public void setFile(List<File> file) {
  this.file = file;
 }

 public List<String> getFileFileName() {
  return fileFileName;
 }

 public void setFileFileName(List<String> fileFileName) {
  this.fileFileName = fileFileName;
 }

 public List<String> getFileContentType() {
  return fileContentType;
 }

 public void setFileContentType(List<String> fileContentType) {
  this.fileContentType = fileContentType;
 }

}

struts.xml

<action name="upload" class="com.test.action.UploadAction">
      <result name="success">/upload/uploadresult.jsp</result>
      <result name="input">/upload/upload.jsp</result>
     </action>

uploadresult.jsp

  <body>
  username:<s:property value="username"/><br>
 
 password:<s:property value="password"/><br>
 
 file1:<s:property value="file"/><br>
 
 
  </body>

 

接下來可以擴充,上傳多個檔案,判斷檔案格式和大小

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.