struts1 實現 檔案上傳

來源:互聯網
上載者:User

  今天幫師兄加了一個檔案上傳的功能,在網上找了找資料,struts1對檔案上傳支援的很好,用起來很方便,其中利用<html:file>可以很方便的上傳檔案

<html:file>的屬性為org.apache.struts.upload.FormFile,很方便獲得其輸入資料流,供新手參考~~

在jsp頁面中<html:form enctype="multipart/form-data" action="upload.do?command=upfile">           <html:file property="uploadfile"/>           <html:submit value="上傳"/>        </html:form> 在struts-config.xml中<action path="/upload"  name="uploadForm"  type="com.env.business.actions.UploadAction"  parameter="command"/><form-bean name="uploadForm" type="com.env.business.forms.UploadForm"/>

在對應的Form中

package com.env.business.forms;import java.io.File;import org.apache.struts.action.ActionForm;import org.apache.struts.upload.FormFile;public class UploadForm extends ActionForm { public FormFile getUploadfile() {  return uploadfile; } public void setUploadfile(FormFile uploadfile) {  this.uploadfile = uploadfile; } private FormFile uploadfile;}

 

對應的Action類中

public class UploadAction extends DispatchAction { public ActionForward upfile(ActionMapping mapping, ActionForm form,   HttpServletRequest request, HttpServletResponse response) throws Exception {  response.setHeader("Pragma","No-cache");  response.setHeader("Cache-Control","no-cache");  response.setDateHeader("Expires", 0);  UploadForm upForm = (UploadForm) form;  PrintWriter out = null;   try {   response.setCharacterEncoding("GBK");   out = response.getWriter();   saveFile(upForm.getUploadfile()); // 將上傳檔案儲存到指寫的路徑(在web.xml中配置)                   out.println("上傳檔案成功.");  } catch (Exception e) {   System.out.println(e.getMessage());   return null;  }  return null; } /**  * 向伺服器寫檔案  * @param formFile  * @throws Exception  */ protected void saveFile(FormFile formFile) throws Exception{  //路徑  String path="D:\\";  //得到輸入資料流  InputStream in = formFile.getInputStream();  //上傳  FileOutputStream fout = new FileOutputStream(path + formFile.getFileName());                byte buffer[] = new byte[8192];                int count = 0;   while ((count = in.read(buffer)) > 0){                    fout.write(buffer, 0, count);               }   fout.close();        //銷毀當前檔案       formFile.destroy();   }   }

實現起來很方便,但是對大小以及斷點續傳功能沒有做實現~~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.