做了一个上传下载的程序,还有很多地方需要改进的地方,还是先贴上来吧,以后在用到的时候做个参照:
上传:用到struts提供的FormFile类,以及html:file标签.在设计上传页面的时候有多个上传浏览框.我这回用了一个土方法在页面上进行了循环赋值,所以在ActionForm中FormFile定义成数组,不知道还有没有更好的方法.
java 代码
- public class UploadAction extends Action {
-
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response)
- throws Exception {
-
- int totalFileSize = 0;
- List list = new ArrayList();
-
- String path = servlet.getInitParameter("file-upload");
-
- UploadForm upform = (UploadForm) form;
-
- FormFile[] file = upform.getFile();
- for (int i = 0; i < file.length; i++) {
-
- String fileName = file[i].getFileName();
-
- String size = file[i].getFileSize()+"";
-
- totalFileSize += file[i].getFileSize();
- if (fileName.equals("") || fileName.equals(null)) {
- request.setAttribute("total",totalFileSize);
- request.setAttribute("filearraylist",list);
- return mapping.findForward("success");
- } else {
-
- uploadFile(file[i], path, fileName, size, upform, request);
-
- FileInfo fi = new FileInfo();
- fi.setFileName(fileName);
- fi.setFileSize(size);
-
- list.add(fi);
-
-
- request.setAttribute("flags", true);
-
-
- File fileList = new File(path);
-
- String[] files = fileList.list();
-
- request.setAttribute("fileList", files);
- }
- }
- request.setAttribute("total",totalFileSize);
- request.setAttribute("filearraylist",list);
- return mapping.findForward("success");
- }
-
- private void uploadFile(FormFile file, String path, String fileName,
- String size, UploadForm upform, HttpServletRequest request) {
- try {
- InputStream is = file.getInputStream();
- OutputStream os = new FileOutputStream(path + "/" + fileName);
-
- byte[] buffer = new byte[20480];
- while ((is.read(buffer, 0, buffer.length)) != -1) {
- os.write(buffer, 0, buffer.length);
- }
- os.flush();
- file.destroy();
-
- close(is, os);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- private void close(InputStream is, OutputStream os) throws IOException {
- is.close();
- os.close();
- }
-
- }
-
- public class UploadForm extends ActionForm {
-
- private FormFile[] file = new FormFile[4];
-
- private String fileName;
-
- private String size;
-
- 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;
- }
-
- public String getSize() {
- return size;
- }
-
- public void setSize(String size) {
- this.size = size;
- }
-
- }
-
upload页面:
jsp 代码
- <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>
- <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>
- <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic"%>
-
- <%@ page language="java" contentType="text/html; charset=GB2312"%>
-
- <logic:present name="flags">
- <script language="javascript" >alert("上传成功!")</script>
- </logic:present>
- <html:html>
- <head>
- <title>test struts upload file</title>
- </head>
- <body>
- <html:errors/>
- <html:messages id="messages" message="true">
- <LI><bean:write name="messages" /></LI>
- </html:messages>
- <html:form action="upload" enctype="multipart/form-data">
- <table cellpadding="0" cellspacing="0" border="0" >
- <tr>
- <td>
- <table height="80%" width="80%">
- <tr>
- <td bgcolor="#ddcc">
- 选择文件
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <tr height="50">
- <td width=2%>
- <table height="80%" width="80%" cellpadding="0" cellspacing="0" border="0">
- <tr>
- <% for(int i=0;i<4;i++){%>
- <td>
- <html:file property='<%="file["+i+"]"%>' />
- </td>
- <%
- }
- %>
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td>
- <html:submit onclick="return(confirm('你确认要上传文件吗?'))">上传文件</html:submit>
- </td>
- </tr>
- <tr>
- <td>
- <table height="80%" width="80%">
- <tr bgcolor="#ddcc">
- <td width="50%">文件名</td>
- <td width="50%">文件大小(byte)</td>
- </tr>
- <tr>
- <logic:empty name="filearraylist" scope="request">
- <tr><td width="50%">总计</td><td width="50%">0</td></tr>
- </logic:empty>
- <logic:notEmpty name="filearraylist" scope="request">
- <logic:iterate id="element" name="filearraylist" scope="request">
- <tr>
- <td width="50%"><bean:write name="element" property="fileName" /></td>
- <td width="50%"><bean:write name="element" property="fileSize" /></td>
- </tr>
- </logic:iterate>
- <tr><td>总计</td><td><bean:write name="total"/></td></tr>
- </logic:notEmpty>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </html:form>
- <br/><br/><br/>
- <%int i=0;%>
- <logic:notEmpty name="fileList" scope="request">
- <table cellpadding="0" cellspacing="0" border="0">
- <tr>
- <td>
- <logic:iterate id="element" name="fileList" scope="request">
- <%= ++i%>
- <a href="<html:rewrite page='/downLoad.do' />?filename=<bean:write name='element' />"><bean:write name="element" /></a><br/>
- </logic:iterate>
- </td>
- </tr>
- </table>
- </logic:notEmpty>
- </body>
- </html:html>
分享到:
相关推荐
创建`UploadAction`类,定义`List<FileInfo>`字段,并实现上传文件的方法。例如: ```java public class UploadAction extends ActionSupport { private List<FileInfo> files; // getters and setters... ...
本教程将探讨如何通过集成Struts2框架在Java后端实现Android客户端的图片上传功能。首先,我们需要了解Android客户端的文件操作以及如何使用HTTP请求将数据发送到服务器。 在Android客户端,我们通常使用`Intent`来...
本篇文章将详细讲解如何利用Struts2.2和Hibernate3.6实现文件的上传与动态下载。 **一、文件上传** 1. **环境配置**:首先,你需要一个集成开发环境,例如MyEclipse8.6,并安装所需的Struts2.21、JUnit4.8.2以及...
本篇文章将深入探讨如何在Struts2框架下实现文件上传的代码实践。 首先,我们需要在Struts2的配置文件(struts.xml)中配置一个Action,该Action将处理文件上传请求。在Action配置中,我们需要指定一个result类型为...
这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件到服务器。在Struts2中,这通常通过表单实现,表单包含一个`<input type="file">`...
本篇文章将详细介绍如何使用Struts2来实现这一功能。 首先,我们需要理解Struts2的上传机制。在Struts2中,文件上传主要依赖于Apache的Commons FileUpload组件,该组件处理HTTP请求中的multipart/form-data类型的...
本篇文章将详细探讨Struts文件上传大小限制的问题。 首先,我们需要理解文件上传的基本流程。在Struts中,当用户通过表单提交文件时,数据会被封装到`ActionForm`对象中,然后由Struts的控制器组件处理。默认情况下...
本篇文章将深入探讨如何在Struts框架下实现文件的上传与下载功能。 ### 文件上传 1. **准备环境**:首先,确保你的项目已经集成了Struts2框架,包括相关的jar包,如struts2-core、struts2-convention-plugin等,并...
这篇博客文章可能详细讨论了如何在Struts2框架中实现这两个功能。 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,这是一个Apache提供的用于处理HTTP多部分请求的工具。以下是实现文件上传的基本步骤: ...
Struts2是一个非常流行的Java Web...本篇文章将详细介绍如何在Struts2中实现这一功能。 首先,我们需要在Struts2的配置文件(struts.xml)中添加相应的action配置,以处理文件上传请求。以下是一个简单的示例: ```xml ...
本篇文章将深入探讨如何使用uploadify这款jQuery插件与Struts2框架结合,实现图片的上传功能。 首先,uploadify是一款强大的前端文件上传插件,它基于JavaScript库jQuery,提供了丰富的自定义选项和友好的用户界面...
本篇文章将深入讲解如何在Struts框架中实现多文件上传。 首先,了解Struts2文件上传的基本原理。Struts2使用了Apache的Commons FileUpload库来处理文件上传。在Struts2的Action类中,我们通常会有一个或多个`File`...
本篇文章将详细讲解如何利用Struts2框架来实现头像上传功能。 首先,我们需要在Struts2配置文件(struts.xml)中添加相关的action配置,以便处理文件上传请求。一个基本的配置可能如下所示: ```xml ...
### Struts2实现文件上传案例 #### 概述 本文将详细介绍如何利用Struts2框架实现文件上传功能。Struts2是Apache软件基金会的一个开源Web...希望这篇详细的案例能够帮助大家更好地理解和掌握Struts2中的文件上传机制。
本篇内容将详细介绍如何在Struts项目中实现多文件上传,并提供相应的代码示例。 #### 1. 前提条件与依赖 为了能够成功地在Struts项目中实现多文件上传功能,首先需要确保以下前提条件得到满足: - **Java版本**:...
在本篇文章中,我们将深入探讨如何利用Struts2实现批量文件上传,以及涉及的相关技术与最佳实践。 首先,我们需要了解Struts2的核心概念——`Interceptor(拦截器)`,这是Struts2处理请求的核心组件,用于在Action...
本篇文章将详细探讨如何在Struts中处理文件上传并解决乱码问题。 首先,我们需要了解Struts文件上传的基本原理。在Struts中,文件上传是通过`Commons FileUpload`库来实现的,它是Apache Commons项目的一部分,专门...
本篇将深入探讨如何在Struts2中实现文件上传功能。 首先,我们需要在前端创建一个HTML表单,允许用户选择要上传的文件。表单应包含`enctype="multipart/form-data"`属性,以启用文件上传支持: ```html ``` ...
本篇文章将深入探讨如何在Struts2框架下实现这一功能,主要涉及的技术包括Struts2的Action、Interceptor、Result以及FileUpload插件。 首先,要实现多文件上传,我们需要引入Apache Commons FileUpload库,这是一个...
这篇博文主要探讨了如何在Struts2框架下实现简单的文件上传功能。 首先,我们需要了解Struts2中的Action类。Action类是处理用户请求的核心组件,通常继承自`org.struts2.interceptor.FileUploadInterceptor`或实现...