制作环境:
Eclipse3.1.1 、 MyEclipse4.1 、 Tomcat5.5.x
步骤:
新建工程 upload
添加 Struts 框架,使用 Struts1.2 版本
新建 一个 jsp + action 这里将使用动态的 ActionForm
在新建表单对像时使用一个文件名和一个文件对像进行提交
修改动态 From 的类型为 org.apache.struts.upload.FormFile
< form-bean name = "upfileForm" type = "org.apache.struts.action.DynaActionForm" >
< form-property name = "filename" type = "java.lang.String" />
< form-property name = "filedata" type = "java.lang.String" />
</ form-bean >
改为
< form-bean name = "upfileForm" type = "org.apache.struts.action.DynaActionForm" >
< form-property name = "filename" type = "java.lang.String" />
< form-property name = "filedata" type = " org.apache.struts.upload.FormFile " />
</ form-bean >
修改 upfile.jsp 文件,在<Form> 中加入 enctype = "multipart/form-data" ,这样才可以提交二进制类型的文件
修改文件第一行代码
<%@ page language = "java" %>
改为
<%@ page contentType = "text/html;charset=UTF-8" language = "java" %>
这里将使用 UTF-8 的编码格式
修改 upfileAction.java 文件,修改后的内容如下:
package com.test.struts.action;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
import org.apache.struts.upload.FormFile;
/**
* MyEclipse Struts
* Creation date: 07-05-2006
*
* XDoclet definition:
* @struts.action path="/upfile" name="upfileForm" input="/upfile.jsp" scope="request" validate="true"
*/
public class UpfileAction extends Action {
// --------------------------------------------------------- Instance Variables
// --------------------------------------------------------- Methods
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
DynaActionForm upfileForm = (DynaActionForm) form;
// 声明并获取对像
String filename = upfileForm.getString("filename");
// 输出文件名
System.out.println(filename);
FormFile filedata = (FormFile) upfileForm.get("filedata");
// 取当前系统路径
String filePath = request.getRealPath("/");
try {
// 转换文件为数据流
InputStream stream = filedata.getInputStream();
// 建立输出流
OutputStream bos = new FileOutputStream(filePath + "/" +
filedata.getFileName());
// 将文件写入网站根目录下
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ( (bytesRead = stream.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.close();
stream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 返回到提交页面
return mapping.getInputForward();
}
}
现在可以进行测试了
这时将会发现,提交的文件及文件名称都是乱码!下面将解决乱码
增加一个过滤器,过滤器的代码请查看包中的具体文件
在 web.xml 文件中加入以下配置内容,过滤器的编码设置为 UTF-8
< filter >
< filter-name > Set Character Encoding </ filter-name >
< filter-class > com.test.SetCharacterEncodingFilter </ filter-class >
< init-param >
< param-name > encoding </ param-name >
< param-value > UTF-8 </ param-value >
</ init-param >
</ filter >
< filter-mapping >
< filter-name > Set Character Encoding </ filter-name >
< url-pattern > /* </ url-pattern >
</ filter-mapping >
< filter-mapping >
< filter-name > Set Character Encoding </ filter-name >
< servlet-name > action </ servlet-name >
</ filter-mapping >
配置 Tomcat 的 server.xml 文件,文件在 Tomcat_Home/conf 中
在端口配置的前面加入 URIEncoding="UTF-8" 如果使用了和IIS集成的话需要在 8009 的端口前也加入此配置内容,关于详细的和IIS集成方法和乱码解决请查看第二十一集的录像
分享到:
相关推荐
接下来,`速动画教程第二十二集.rtf`很可能是一个配套的教程文本,以Rich Text Format (RTF) 格式存储,详细解释了在Struts中实现文件上传的步骤。RTF文件通常包含了丰富的格式信息,方便用户阅读和理解教程内容。 ...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
{13.10}可滚动结果集}{201}{section.13.10} {13.11}Procedure}{201}{section.13.11} {14}xml}{204}{chapter.14} {14.1}元素}{204}{section.14.1} {14.2}XML的设计}{205}{section.14.2} {14.3}DTD/Schema}{205}...
【Java技术点】涵盖的内容广泛,从初级到高级,涵盖了编程基础、Web开发、框架使用、数据处理、安全防范等多个方面。以下将按照知识等级进行详细的解析: **初级知识点** 1. **SVN环境搭建**:版本控制系统,用于...
13、修复了上传图片时如果图片是动画为该图片生成缩略图和水印图片 14、修复了在gbk项目下无法保存ftp密码的问题 15、修复了合并用户时合并短消息异常 16、修复了主题自动关闭后仍可以回复的问题 17、修复了编辑...