天天看點

html檔案上傳file,<html:file>實作上傳檔案JBuilder Generated Struts JSP for

fileLoad.jsp

代碼如下:

uri="/WEB-INF/struts-logic.tld" prefix="logic"

%>

prefix="bean" %>

prefix="html" %>

%>

fileLoad.jsp

JBuilder Generated Struts JSP for

ActionForm forms.LoadForm

enctype="multipart/form-data">

property="file"/>

/>//對應于ActionFrom的FormFile file屬性。

value="Submit"/>

property="fname">

name:

property="fname"/>

size:

property="size"/>

LoadForm的代碼:

package forms;

import org.apache.struts.action.ActionForm;

import org.apache.struts.upload.FormFile;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionMapping;

import javax.servlet.http.HttpServletRequest;

public class LoadForm extends ActionForm {

private

FormFile file;

private

String fname;

private

String size;

public

FormFile getFile() {

return file;

}

public

void setFile(FormFile file) {

this.file = file;

}

public

void setSize(String size) {

this.size = size;

}

public

void setFname(String fname) {

this.fname = fname;

}

public

String getFname() {

return fname;

}

public

String getSize() {

return size;

}

public

ActionErrors validate(ActionMapping actionMapping,

HttpServletRequest httpServletRequest) {

return null;

}

public

void reset(ActionMapping actionMapping,

HttpServletRequest servletRequest) {

}

}

LoginAction代碼如下:

package actions;

import

org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionForm;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForward;

import forms.LoadForm;

import org.apache.struts.action.Action;

import org.apache.struts.upload.FormFile;

import java.io.*;

public class LoadAction extends Action {

public

ActionForward execute(ActionMapping actionMapping,

ActionForm actionForm,

HttpServletRequest servletRequest,

HttpServletResponse servletResponse)throws Exception {

LoadForm loadForm = (LoadForm) actionForm;

FormFile ff=loadForm.getFile();

if(ff==null)

{

return actionMapping.findForward("success");

}

String fname=ff.getFileName();

String size=Integer.toString(ff.getFileSize())+"bytes";

InputStream in=ff.getInputStream();

OutputStream out=new FileOutputStream("/"+fname);

int bytesRead=0;

byte[] buffer=new byte[8192];

while((bytesRead=in.read(buffer,0,8192))!=-1)

{

out.write(buffer,0,bytesRead);

}

out.close();

in.close();

loadForm.setFname(fname);

loadForm.setSize(size);

ff.destroy();

return actionMapping.findForward("success");

}

}

struts-config.xml代碼:

encoding="UTF-8"?>

/p>

Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

/>

scope="request" type="actions.LoadAction"

input="/fileLoad.jsp">

path="/fileLoad.jsp">

說明:标簽可以友善的實作檔案上傳功能。

有以下幾點需要注意:

1:

必須嵌套在标簽中。

2:

标簽的method的屬性必須設為"post".

3:

标簽的編碼類型enctype屬性必須為"multipart/form-data"。

4:标簽必須設為property屬性,這個屬性和ActionForm

Bean中FormFile類型的屬性對應。