struts2-18-上传多文件

上传多文件:数组或者集合

一:上传文件的主页面  upload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ 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=UTF-8">
<title>上传文件主页面</title>
</head>
<body>
<s:fielderror/>
<form action="uploadAction" method="post" enctype="multipart/form-data">
<table border="1">
<caption>上传文件</caption>
<tr>
<th>上传标题</th>
<td><input type="text" name="title"></td>
</tr>
<tr>
<th>选择文件1:</th>
<td><input type="file" name="upload"></td>
</tr>
<tr>
<th>选择文件2:</th>
<td><input type="file" name="upload"></td>
</tr>
<tr>
<th>选择文件3:</th>
<td><input type="file" name="upload"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="上传"></td>
</tr>
</table>
</form>
</body>
</html>

二:跳转到相应的action  nuc.sw.action---uploadAction.java

package nuc.sw.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.UUID;

import com.opensymphony.xwork2.ActionSupport;

public class uploadAction extends ActionSupport {
private String title;
private File[] upload;
private String[] uploadFileName;
private String[] uploadContentType;
private String savePath;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}

public File[] getUpload() {
return upload;
}
public void setUpload(File[] upload) {
this.upload = upload;
}
public String[] getUploadFileName() {
return uploadFileName;
}
public void setUploadFileName(String[] uploadFileName) {
this.uploadFileName = uploadFileName;
}
public String[] getUploadContentType() {
return uploadContentType;
}
public void setUploadContentType(String[] uploadContentType) {
this.uploadContentType = uploadContentType;
}
public String getSavePath() {
return savePath;
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}

@Override
public String execute() throws Exception {
System.out.println(title);
System.out.println(upload);
System.out.println(uploadFileName);
System.out.println(uploadContentType);
System.out.println(savePath);
for(int i=0;i<upload.length;i++){
//输入流
FileInputStream fis=new FileInputStream(upload[i]);
//输出流
//上传两次一样的都会成功且显示两个,所以解决覆盖问题
FileOutputStream fos=new FileOutputStream(savePath+"/"+UUID.randomUUID().toString()+"_"+uploadFileName[i]);
//字节为单位上传
byte[] buffer=new byte[1024];
//定义长度
int len=0;
//从0开始
while((len=fis.read(buffer))>0){
fos.write(buffer, 0, len);
}
}
//不能写输入输出流
return SUCCESS;
}
}

三:配置struts.xml

1:  对文件的类型 大小进行限制(实现文件过滤)

2:设置上传的文件的真实路径  即将.tmp文件保存到savepath文件中

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5
 6 <struts>
 7  <constant name="struts.devMode" value="true" />
 8  <!-- 设置文件的临时保存路径 -->
 9  <constant name="struts.multipart.saveDir" value="d:/tmpsaveDir"></constant>
10  <package name="default" namespace="/" extends="struts-default">
11      <action name="uploadAction" class="nuc.sw.action.uploadAction">
12          <!-- 需要去找源码:struts-default.xml中寻找拦截器  再关联源码 -->
13          <interceptor-ref name="fileUpload">
14               <!--设置上传的文件类型 -->
15                 <!-- 隐藏这一属性后,黑客可以随意上传修改后缀名的病毒文件 (实质没有改变)-->
16               <param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/phpeg,text/plain</param>
17              <!-- 设置上传的文件的大小 -->
18              <param name="maximumSize">65535</param>
19              <!-- 设置上传文件的扩展名 -->
20              <param name="allowedExtensions">.txt</param>
21          </interceptor-ref>
22          <!-- 引用默认拦截器时,需要使用defaultStack -->
23          <interceptor-ref name="defaultStack"/>
24          <!-- 设置保存的真实路径 -->
25          <param name="savePath">d:/uploadRealFile</param>
26          <result name="success">/hello.jsp</result>
27          <result name="input">/upload.jsp</result>
28      </action>
29  </package>
30 </struts>

四:项目结构

五:运行结果

时间: 2024-08-24 01:51:54

struts2-18-上传多文件的相关文章

struts2文件上传,文件类型 allowedTypes

struts2文件上传,文件类型 allowedTypes 1 '.a' : 'application/octet-stream', 2 '.ai' : 'application/postscript', 3 '.aif' : 'audio/x-aiff', 4 '.aifc' : 'audio/x-aiff', 5 '.aiff' : 'audio/x-aiff', 6 '.au' : 'audio/basic', 7 '.avi' : 'video/x-msvideo', 8 '.bat'

复习struts2+jsp上传文件

有个form <form action="upload" id="upForm" method="post">     <input type="file" id="att" name="attachment" accept="img/jpeg">     <input type="submit" value=&quo

struts2+uploadify上传文件

common.uploadPhoto=function(){ $("#uploadFile").uploadify({ swf: '/ecp/res/web/plugins/uploadify/uploadify.swf', //[必须设置]swf的路径 uploader:common.uploader, //[必须设置]上传文件触发的url buttonImg:'/ecp/res/web/img/152743_719516335.png', width: 120, //设置浏览按钮的

关于struts2的上传和下载

1. 1文件上传技术: JSPSmartUpload:应用在Model1年代.(嵌入到JSP) FileUpload:应用在Model2年代. Servlet3.o:完成文件上传. Struts2框架:完成文件上传. 1.2    文件上传要素: * 1.表单的提交方式:POST.(POST 没有大小限制) * 2.表单元素中需要有<input type=”file”>这个元素必须有一个name属性. * 3.表单的enctype属性是multipart/form-data(MIME协议中的分

struts2 图片上传

struts2本身自带有上传功能,所以只需要导入相应的包即可以使用,具体的哪些包,可以上网搜索,就不一一列举了. 先看一下前台代码: <form action="fileUpload_upload" method="post" enctype="multipart/form-data"> <table> <tr> <td>上传文件:</td> <td><input ty

WebUploader插件上传大文件单文件和多文件JAVA版使用总结

一.使用webuploader插件的原因说明 被现在做的项目坑了. 先说一下我的项目架构Spring+struts2+mybatis+mysql 然后呢.之前说好的按照2G上传就可以了,于是乎,用了ajaxFileUpload插件,因为之前用图片上传也是用这个,所以上传附件的时候就直接拿来用了 各种码代码,测试也测过了,2G文件上传没问题,坑来了,项目上线后,客户又要求上传4G文件,甚至还有20G以上的..纳尼,你不早说哦... 在IE11下用ajaxFileUpload.js插件上传超过4G的

Struts文件上传allowedTypes问题,烦人的“允许上传的文件类型”

Struts的文件上传问题,相信很多人都会使用allowedTypes参数来配置允许上传的文件类型,如下. [html] view plaincopy <param name="allowedTypes"> image/png,image/bmp,image/jpg </param> 但是,用过这个参数的人都知道,allowedTypes是“文件类型”, 而不是“文件后缀名”,文件类型与文件后缀名有什么区别呢? 就如后缀名为bmp的图片的文件类型为image/b

commons-io在struts框架中无法获取upload.parseRequest(request)上传的文件解决方案

commons-io在struts框架中无法获取upload.parseRequest(request)上传的文件的主要原因是因为struts将request进行了封装,在文件上传时struts会将HttpServletRequest请求被转成了MultiPartRequestWrapper,所以如需使用request,则需要将struts封装好的的MultiPartRequestWrapper转换成HttpServletRequest,这里需要实行两部操作: 操作一:创建java类,继承Jak

文件上传--多文件上传

首先先创建jsp页面(用于多文件上传) <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme() + "://" + request.getServerName() +

WebAPI上传大文件

今天在研究WebAPI的上传与下载,作为Rest的框架,更多是面向资源,就其本身来说,是不会涉及也不应该涉及到大文件的处理,具体多大呢,也就是ASP.NET的限值2G. ASP.NET的pipeline对于上传文件一般的处理流程是接收到文件,放到内存中,我们也一般只处理后续的流程,例如存入硬盘等等. 目前想象的一个场景是上传一个大文件,后续处理可能有多种.如果并发数过多,肯定会造成内存溢出,所以参考资料与琢磨,搞定了这个问题. 但是场景本身是有一定问题的,这纯属个人爱好在玩,真实场景来说文件不宜