<form action="fileupload.action" method="post" enctype ="multipart/form-data">
<input type="file" name="file"><br>
<input type="submit" value="submit">
</form>
jsp中的表单
package com.actions;
import java.io.*;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadActions extends ActionSupport {
private static final int BUFFER_SIZE=16*1024;
private File file;
private String contentType;
private String fileName;
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public void setFileContentType(String contentType) {
this.contentType = contentType;
}
public void setFileFileName(String fileName) {
this.fileName = fileName;
}
public String execute(){
File dstFile=new File(ServletActionContext.getServletContext().getRealPath("/upload"+"/"+fileName));
try {
InputStream is=new BufferedInputStream(new FileInputStream(file),BUFFER_SIZE);
OutputStream os=new BufferedOutputStream(new FileOutputStream(dstFile),BUFFER_SIZE);
byte[] buffer=new byte[BUFFER_SIZE];
while(is.read(buffer)>0){
os.write(buffer);
}
is.close();
os.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return SUCCESS;
}
}
action代码
<action name="fileupload" class="com.actions.FileUploadActions">
<interceptor-ref name="fileUpload">
<param name="allowedTypes">
image/bmp,image/png,image/gif,image/jpeg
</param>
</interceptor-ref>
<interceptor-ref name ="defaultStack" />
<result name="input">index.jsp</result>
<result name="success">index.jsp</result>
</action>
struts.xml中的代码
在上面的代码中我分别写了setFileContentType方法和setFileFileName方法,这两个方法并没有和页面上的任何代码绑定,其实表单file不但绑定了contentType(文件类型)和FileName(文件名)。