雖然現在在企業中已經很少使用struts1版進行開發了,但本文的主旨在於熟悉其框架中的思想,以及各個框架的一些區別。下面就struts1中文件上傳的配置步驟作一下簡要的說明。
首先,要相關的jar包,這點不管你是使用哪種框架都要做這步操作,這是沒得說的。在引用相關的資源文件後,我們就要配置一些基本的actoin,這些配置步驟在這裏就不做說明了,可參考我之前寫過的一篇博文《java中struts 框架基本配置小結》。下面我就直接說明一下,jsp頁面的配置以及後臺java代碼是如何編寫的。
1、具體的jsp代碼如下:
<form action="/testfileupload/fileupload.do" method="post" enctype="multipart/form-data">
<input type="file" name="formFile" id="formFile"/>
<br/>
<input type="submit" value="上傳">
</form>
這裏需要注意的是form標籤的enctype值必須爲”multipart/form-data”,action屬性爲對應後臺配置的action表單提交時調用。
當然我們還要在Tomcat的WebContext下創建一個文件夾,用以保存上傳的文件,本文就以upload文件夾爲例
對應後臺的action處理代碼如下:
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import com.ev.formbean.FileBean;
public class FileUploadAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
FileBean file = (FileBean)form;
FormFile formFile = file.getFormFile();
InputStream in = formFile.getInputStream();
String fileName = formFile.getFileName();
int size = formFile.getFileSize();
byte[] arr = new byte[size];
in.read(arr);
String path = super.servlet.getServletContext().getRealPath("/upload");
OutputStream out = new FileOutputStream(path+"\\"+fileName);
out.write(arr);
in.close();
out.close();
System.out.println("上傳成功!");
return mapping.findForward("index");
}
}
其實這些後臺代碼的基本思想就是一些輸入輸出流的讀寫而已。過程就是從FormFile類型的對象(struts1內置的類型)獲得一個輸入,然後將數據存入到一個數組中,再根據文件路徑和文件名創建輸出流,從而將文件存到文件夾中。