Struts1 上传文件
来源:互联网 发布:linux常用命令全集 编辑:程序博客网 时间:2024/05/16 15:09
利用Struts上传文件是非常方便的,与smartUpload相比最大的优点在于它可以上传很大的文件,测试的时候两百多兆是可以的,四百多就不行了,它应该是有个配置,不过现在还没有搞明白。先贴一贴昨天晚上写得代码吧。
首先是上传界面的代码:
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <html:html>
- <head>
- <title>Struts上传文件</title>
- </head>
- <body>
- <!-- 这里需要注意的是method一定要设成post,还要设置enctype为multipart/form-data-->
- <html:form action="upload" enctype="multipart/form-data" method="post">
- <table>
- <tr>
- <td>
- <div>
- <html:file property="file" size="30"></html:file>
- </div>
- </td>
- </tr>
- <tr>
- <td>
- <div>
- <html:submit property="upload" value="上传"></html:submit>
- </div>
- </td>
- </tr>
- </table>
- </html:form>
- </body>
- </html:html>
然后是页面对应的ActionForm,你可以写成一个普通的ActionForm,也可以写成一个动态的ActionForm,这里我写成了一个普通的ActionForm
UploadForm:
- package forms;
- import org.apache.struts.action.ActionForm;
- import org.apache.struts.upload.FormFile;
- public class UploadForm extends ActionForm {
- private String filename;
- private FormFile file;
- public FormFile getFile() {
- return file;
- }
- public void setFile(FormFile file) {
- this.file = file;
- }
- public String getFilename() {
- return filename;
- }
- public void setFilename(String filename) {
- this.filename = filename;
- }
- }
处理业务的Action:
UploadAction:
- package actions;
- import java.io.FileOutputStream;
- 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.upload.FormFile;
- import forms.UploadForm;
- public class UploadAction extends Action {
- @Override
- public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res) throws Exception {
- UploadForm uf=(UploadForm)form;
- String filename=uf.getFilename();
- FormFile file=uf.getFile();
- if(file!=null){
- System.out.println("我叫"+file.getFileName());
- }
- //这里需要注意的是request.getRealPath();已经废弃,可以通过
- //下面的方法来替代
- String path=req.getSession().getServletContext().getRealPath("/");
- InputStream in=file.getInputStream();
- OutputStream out=new FileOutputStream(path+"/upload/"+file.getFileName());
- int read=0;
- byte[] buffer=new byte[1024];
- while((read=in.read(buffer,0,1024))!=-1){
- out.write(buffer, 0, read);
- }
- in.close();
- out.close();
- return mapping.findForward("uploadsuc");
- }
- }
Struts-config.xml的配置:
- <form-beans>
- <form-bean name="uploadform" type="forms.UploadForm"></form-bean>
- </form-beans>
- <action path="/upload"
- type="actions.UploadAction"
- name="uploadform"
- input="/test/upload.jsp"
- scope="request"
- >
- <forward name="uploadsuc" path="/test/uploadsuc.jsp"/>
- </action>
- struts1.2文件上传
- Struts1文件上传
- Struts1.2.9文件上传
- struts1 ftp 文件上传
- struts1文件上传
- struts1中的文件上传
- Struts1 上传文件
- Struts1文件上传
- Struts1文件上传
- struts1多文件上传
- struts1 上传文件
- Struts1上传文件
- struts1.2上传文件
- struts1 实现 文件上传
- struts1(3)----文件上传
- struts1 上传文件
- struts1文件上传
- Struts1实现文件上传
- 管理好临时变量 改善循环效率
- android 2.3 api StrictMode
- SQL 2005 行转列
- Struts2一个Action内包含多个请求处理方法的处理
- 清空数据库
- Struts1 上传文件
- iBatis的JpetStore示例中MVC机制实现原理
- fatal error C1075: 与左侧的 大括号“{”(位于“d:/vs2008workspace/wtl/controlmanial/controlmanial/stdafx.h(36)”)匹配之前遇到文件结束
- bash变量自动拓展
- 【转】手把手教你把Vim改装成一个IDE编程环境(图文)
- gdb 常用命令
- 【music】唯美吟唱:You are
- 解决memcached_set()报错
- 新手想拜师