最近写测试struts2上传文件发现的问题
最近在写测试 struts2 上传的时候发现个问题 。不知道你们谁有过相同的问题 。我的环境为 jdk1.5,tomcat6.10 。发现的问题就是我在上传多个问题的时候。第一次会失败,发现是没得到我的file对象。发现是没生成临时文件的缘故。点ie的 回退到上传页面(这个时候没刷新) 然后再上传。这样就会成功,这个时候的的临时文件被删除了的。。如果刷新了jsp页面的话 。就会提示空指针异常。我也试图写一个类型转换器 在操作file的时候就去判断file对象的问题。。发现表单的enctype="multipart/form-data" 而我写的 Converter 就没进去起作用了 。付上我的代码。大家研究下。
<%@ page language="java" contentType="text/html; charset=gbk" pageEncoding="gbk"%> <%@ taglib prefix="s" uri="/struts-tags" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> <title>Insert title here</title> <script type="text/javascript"> function addMore() { var td = document.getElementById("more"); var br = document.createElement("br"); var input = document.createElement("input"); var button = document.createElement("input"); input.type = "file"; input.name = "file"; button.type = "button"; button.value = "Remove"; button.onclick = function() { td.removeChild(br); td.removeChild(input); td.removeChild(button); } td.appendChild(br); td.appendChild(input); td.appendChild(button); } </script> </head> <body> <table align="center" width="50%"> <tr> <td> <s:fielderror cssStyle="color:red" /> </td> </tr> </table> <s:form action="upload" theme="simple" method="post" enctype="multipart/form-data"> <table align="center" width="50%" border="1"> <tr> <td> username </td> <td> <s:textfield name="username"></s:textfield> </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> <s:submit value=" submit "></s:submit> </td> <td> <s:reset value=" reset "></s:reset> </td> </tr> </table> </s:form> </body> </html>下面是action
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.List; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; public class UploadAction extends ActionSupport { private String username; private String password; private List<File> file; private List<String> fileFileName; private List<String> fileContentType; 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; } @Override public String execute() throws Exception { System.out.println(getFile().size()); 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; } }下面是配置
<action name="upload" class="com.eagle.struts2.test.action.UploadAction"> <result name="success">/uploadResult.jsp</result> <result name="input">/upload.jsp</result> <!-- <param name="savePath">/upload</param> --> <interceptor-ref name="fileUpload"> <param name="maximumSize">102400</param> <!-- <param name="allowedTypes">application/vnd.ms-powerpoint</param> --><!-- 在tocamt里面的webxml中可以找到 --> </interceptor-ref> <interceptor-ref name="defaultStack"></interceptor-ref> </action>
相关推荐
lupeng 2020-11-14
sjcheck 2020-11-10
sjcheck 2020-11-03
meylovezn 2020-08-28
owhile 2020-08-18
Francismingren 2020-08-17
pythonclass 2020-07-29
sunzhihaofuture 2020-07-19
爱读书的旅行者 2020-07-07
行吟阁 2020-07-05
tianqi 2020-07-05
行吟阁 2020-07-04
冰蝶 2020-07-04
lyg0 2020-07-04
owhile 2020-07-04
opspider 2020-06-28
lengyu0 2020-06-28
tianqi 2020-06-21
dadaooxx 2020-06-16