RSS
热门关键字:  java  Ajax  JSP  JSF  Struts
当前位置 : 首页>Struts>列表

Struts2文件的上传和下载

来源:CSDNBlog 作者: 时间:2007-10-18 点击:


<result name="input">/index.jsp</result>
<result name="success">/showupload.jsp</result>
</action>
</package>
</struts>

  如果上传文件失败,系统返回到input对应的页面,要在input对应的页面输出文件过滤失败信息,可以在input对应的页面中增加 <s:fielderror/>来显示错误信息。

  显然,这样的提示不太友好,应用使用国际化信息。在国际化资源文件中添加如下三句:

  #更改上传文件类型不允许的提示信息

struts.messages.error.content.type.not.allowed=文件上传失败:你要上传的文件类型不允许

  #更改上传文件太大的提示信息

struts.messages.error.file.too.large=文件上传失败:你要上传的文件太大

  #文件上传其它错误信息

struts.messages.error.uploading=文件上传失败:发生内部错误

  别忘了要用native2ascii.exe进行编码转换哦。再运行调试:

  另外,在控制台会看到一条消息:

Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.tempdir
Removing file upload D:\tomcat6.0.13\work\Catalina\localhost\fileload_struts2\upload__4b616fd1_115a3d5d9dc__7fff_00000005.tmp

  第一个说是找不以struts.multipart.saveDir,即没有指定临时文件夹,这个很好解决,只需指定一个struts.multipart.saveDir常量值为某个目录来解决。第二个说正在删除一个临时文件,这个临时文件是上传过程中产生的,属正常。

  4. 多文件上传:

  Struts2也可以很方便地实现多文件上传。

  在输入表单域增加多个文件域:multifileupload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>多文件上传</title>
</head>
<body>
<font color="red"><s:fielderror/></font>
<form action="multiFileUpload.action" method="POST" enctype="multipart/form-data">
文件标题:<input type="text" name="title" size="50" value="${param.title }"/><br/>
<!-- 设置二个文件域,名字相同 -->
选择第一个文件:<input type="file" name="upload" size="50"/><br/>
选择第二个文件:<input type="file" name="upload" size="50"/><br/>
<input type="submit" value=" 上传 "/>
</form>
</body>
</html>

  在Action类中用数组来封装该多个文件域:MultiFileUploadAction.java

package org.qiujy.web.struts2;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

/**
*处理多文件上传的Action类
*
*@authorqiujy
*@version1.0
*/
publicclass MultiFileUploadAction extends ActionSupport {
privatestaticfinalintBUFFER_SIZE = 16 * 1024;
// 文件标题
private String title;
// 用File数组来封装多个上传文件域对象
private File[] upload;
// 用String数组来封装多个上传文件名
private String[] uploadFileName;
// 用String数组来封装多个上传文件类型
private String[] uploadContentType;
// 保存文件的目录路径(通过依赖注入)
private String savePath;

//以下为所有属性的getter和setter。省略。。。

// 自己封装的一个把源文件对象复制成目标文件对象
privatestaticvoid copy(File src, File dst) {
InputStream in = null;
OutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);
out = new BufferedOutputStream(new FileOutputStream(dst),
BUFFER_SIZE);
byte[] buffer = newbyte[BUFFER_SIZE];
int len = 0;
while ((len = in.read(buffer)) > 0) {

最新评论共有 1 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
Google Adsense
相关文章