最近在写测试 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>
分享到:
相关推荐
struts2 fileupload 文件上传
绝对能用,经过测试,好用,简单,代码少,下载吧,相信我。没错。我做过实验
基于Struts2的文件上传下载功能的完整源代码。经过测试可正确运行。
毕竟是第一次用 不是很熟悉 希望有人发现问题可以交流一下">这是根据uploadify3 2结合struts2搭建的文件上传环境 可以直接导入eclipse运行 每步实现基本都加了注释 以下是我碰到的问题: 1 判断session是否失效 ...
struts2上传图片到Oracle,并进行显示,测试可以成功上传
struts2 struts2上传 struts2上传文件 struts2上传实例 struts上传,随手写的一个Demo,测试可以通过.
测试过了,好用的上传程序。java struts2 带进度显示的 效果不错 只支持单个文件
10.防止上传文件的名称冲突与综合测试 11.限制上传文件的大小与演示超限后的问题 12.深入分析上传文件超限后的问题原因 13.上传文件超限后的编程处理 14.多文件上传的问题及论坛项目的评论 15.修正从配置文件中读取...
10.防止上传文件的名称冲突与综合测试 11.限制上传文件的大小与演示超限后的问题 12.深入分析上传文件超限后的问题原因 13.上传文件超限后的编程处理 14.多文件上传的问题及论坛项目的评论 15.修正从配置文件中读取...
用struts1实现文件的上传和下载,在本机已测试成功,一个简单的实现文件上传和下载的功能
1.struts.multipart.maxSize掌控整个项目所上传文件的最大的Size。超过了这个size,后台报错, 程序处理不了如此大的文件。fielderror里面会有如下的提示: the request was rejected because its size (16272982) ...
Struts2实现文件上传下载,本人亲自测试过,没有问题。
2. 采用jquery.form.js实现ajaxForm提交表单或上传文件到服务器。 3. 在struts2的Action通过2种不同的实现方法返回json格式的字符串。 4. 针对商品实现简单无刷新上传与下载 4. 批量导入数据采用的是导入test文件夹...
在网络上,对于Java处理文件上传和下载的技术比较...最近也在研究一下文件的上传和下载,在整合网上、浪曦风中叶老师和自己的学习的思想,写了这个工程,提供给大家参考,所以的代码终在IE、FireFox、Chrome测试通过。
strtus2+hibernate文件上传及连接数据库操作,使用模拟http请求测试的,验证类是updateTest类,文件上传类是uplodController,连接数据库的操作时productController类
测试时,建议自己建立那个用于存放上传文件的文件夹 (UploadAction中指定的路径是E:\tjx\eclipsewp\Struts2Demo2\WebContent\upload,你可以自定义,到时改一下action中写的那个路径\\) struts2版本:struts2.3.4
struts1.2 图片文件上传(单个/动态多个) 单个的采用通用Action 需要ActionForm的,而动态多个上传是采用动态代理类(DispatchAction) 希望对大家有用,另JSP在IE测试通过,JS我就不再处理了!
基于Struts2.0框架的文件上传实例, 可以同入门者参考 已测试过,可运行.
11.1.2 Struts 2如何解决本地Java对i18n支持的问题 243 11.2 Struts 2 i18n示例 244 11.2.1 Struts 2 i18n快速展示 244 11.2.2 幕后一览 246 11.3 Struts 2 i18n详情 247 11.3.1 Struts 2默认的TextProvider Re-...
资源绝对可以用,经本人测试。。 原理:一次可以全选N个文件,然后将文件放入队列中,依次单个文件上传。可以设定上传文件大小类型,只需要更改路径就可以了