下载 swfupload 文件夹 里面包含handlers.js,swfupload.js,swfupload.swf 三个文件。

我的是和ssh项目整合在一起的。因为struts2的拦截器会拦截所有请求,在跳转到上传文件的servlet中时request请求会被转换为struts的请求。所以要去掉struts的请求。

假如web.xml配置的拦截所有请求,可以修改这里,不拦截所有

<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>
struts-default.xml,struts-plugin.xml,resources/struts/struts.xml
</param-value>
</init-param>
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.yuncai.modules</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

或者在struts.xml中加上 <constant name="struts.action.excludePattern" value="/servlet/.*" />  struts不会拦截这个路径下的所有

上传文件的servlet的路径

<struts>
<!-- 开启使用开发模式,详细错误提示 -->
<constant name="struts.devMode" value="true" />
<!-- 默认后缀名 -->
<constant name="struts.action.extension" value="jsp" />
<constant name="struts.action.excludePattern" value="/servlet/.*" />
<!-- 指定每次请求到达,重新加载资源文件 -->
<constant name="struts.i18n.reload" value="true" />
<!-- 视图标签默认的视图主题-->
<constant name="struts.ui.theme" value="simple" />
<!-- 国际化资源文件 -->
<constant name="struts.custom.i18n.resources" value="globalMessages" />
<!-- locale -->
<constant name="struts.locale" value="zh_CN" />
<!-- 指定资源编码类型 -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<!-- 生成URL时是否包含请求参数 -->
<constant name="struts.url.includeParams" value="none" />
<!-- 文件上传中整个请求内容允许的最大字节数 -->
<constant name="struts.multipart.maxSize" value="1048576000" /> <constant name="struts.objectFactory" value="spring"/> </struts>
<%@ page language="java" pageEncoding="utf-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<head>
<link rel="stylesheet" type="text/css" href="../css/zlstyle.css">
<script type="text/javascript" src="/swfupload/swfupload.js"></script>
<script type="text/javascript" src="/swfupload/handlers.js"></script>
<script type="text/javascript" src="../js/jquery-1.10.2.min.js"></script>
</head>
<body leftmargin="10" topmargin="10" marginwidth="10" marginheight="10">
<table width="100%" border="1" bordercolor="#464646" align="center"
cellpadding="0" cellspacing="0">
<tr>
<td align="right">
是否显示:
</td>
<td>
<input type="checkbox" id="isValid" value="0" onclick="check1();"/>
</td>
</tr>
<tr>
<td align="right">
说明:
</td>
<td>
<textarea rows="" cols="" id="info"></textarea>
</td>
</tr>
</table>
<input type="button" onclick="swfupload();" value="添加控件"/>
<span id="spanButtonPlaceholder"></span>
<div id="divFileProgressContainer" style="width:200;display:none;"></div>
<div id="thumbnails">
<table id="infoTable" border="0" style="background-color: #C5D9FF;"></table>
</div>
<!--为了把表单数据传到servlet,所以多加了一个点击按钮-->
<script type="text/javascript">
var swfu;
function swfupload() {
swfu = new SWFUpload({
upload_url: "/servlet/FileUploadServlet",
// File Upload Settings
file_size_limit : "50 MB", // 1000MB
file_types : "*.apk",//设置可上传的类型
file_types_description : "所有文件",
file_upload_limit : "100",
// 向服务端传递的参数
use_query_string : true,
post_params: {
"isValid" : document.getElementById("isValid").value,"info" : document.getElementById("info").value
}, file_queue_error_handler : fileQueueError,//选择文件后出错
file_dialog_complete_handler : fileDialogComplete,//选择好文件后提交
file_queued_handler : fileQueued,
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete, // Button Settings
button_image_url : "images/SmallSpyGlassWithTransperancy_17x18.png",
button_placeholder_id : "spanButtonPlaceholder",
button_width: 100,
button_height: 18,
button_text : '<span class="button">选择APK</span>',
button_text_style : '.button { font-family: Helvetica, Arial, sans-serif; font-size: 12pt; } .buttonSmall { font-size: 10pt; }',
button_text_top_padding: 0,
button_text_left_padding: 18,
button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
button_cursor: SWFUpload.CURSOR.HAND, // Flash Settings
flash_url : "swfupload/swfupload.swf", custom_settings : {
upload_target : "divFileProgressContainer"
},
// Debug Settings
debug: false //是否显示调试窗口
});
};
function startUploadFile(){
swfu.startUpload();
} function check1(){
var isValid = document.getElementById("isValid").value;
if(isValid==0)
document.getElementById("isValid").value="1";
else
document.getElementById("isValid").value="0";
}</script>
</body>
package com.yuncai.modules.servlet;

import java.io.File;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Enumeration; import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.apkinfo.api.GetApkInfo;
import org.apkinfo.api.domain.ApkInfo; import com.oreilly.servlet.MultipartRequest;
import com.yuncai.core.tools.DBConn;
import com.yuncai.core.tools.HttpOut;
import com.yuncai.core.tools.LogUtil;
import com.yuncai.core.util.DBHelper;
import com.yuncai.core.util.DBUpload; /**
* @author gx
* @version 2014-4-3
*/
public class FileUploadServlet extends HttpServlet { private static final long serialVersionUID = -3096800116651263134L; private String fileSizeLimit; public void init(ServletConfig config) throws ServletException {
this.fileSizeLimit = config.getInitParameter("fileSizeLimit");
} public void destroy() {
super.destroy();
} public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
String uploadDir = "upload" + File.separatorChar + "apk" + File.separatorChar;
String ctxDir = session.getServletContext().getRealPath(String.valueOf(File.separatorChar));
if (!ctxDir.endsWith(String.valueOf(File.separatorChar))) {
ctxDir = ctxDir + File.separatorChar;
}
File savePath = new File(ctxDir + uploadDir);
if (!savePath.exists()) {
savePath.mkdirs();
}
String saveDirectory = ctxDir + uploadDir;
int maxPostSize = 80 * 1024 * 1024;
String encoding = "UTF-8";
MultipartRequest multi = null;
try {
multi = new MultipartRequest(request, saveDirectory, maxPostSize, encoding);
} catch (IOException e) {
e.printStackTrace();
return;
} Enumeration<?> files = multi.getFileNames();
while (files.hasMoreElements()) {
String name = (String) files.nextElement();
File f = multi.getFile(name);
if (f != null) { Connection conn = DBConn.getConn("sqlServer");
String sql ="";
PreparedStatement ps=null;
sql = "select ID from T_Channel where NAME=?";
ResultSet rs =null;
try {
conn = DBConn.getConn("sqlServer");
sql ="insert into table(isValid,info) values(?,?)";
ps=conn.prepareStatement(sql); ps.setString(2, request.getParameter("info"));
ps.setString(1, request.getParameter("isValid"));
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(DBHelper.isNoNull(ps))
ps.close();
if(DBHelper.isNoNull(conn))
conn.close();
} catch (SQLException e) {
}
}
}
} } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
} public String getFileSizeLimit() {
return fileSizeLimit;
} public void setFileSizeLimit(String fileSizeLimit) {
this.fileSizeLimit = fileSizeLimit;
} }

java实现批量上传(swfupload)的更多相关文章

  1. [Pulgin] 利用swfupload实现java文件批量上传

    URL:http://blog.csdn.net/xuweilinjijis/article/details/8876305 之前在网上找过很多相关资料,很多所谓的批量上传都是忽悠人的,真正的批量上传 ...

  2. WEB版一次选择多个文件进行批量上传(swfupload)的解决方案

    说明:功能完全支持ie和firefox浏览器! 一般的WEB方式文件上传只能使用FileUpload控件进行一个文件一个文件的进行上传,就算是批量上传,也要把文件一个一个的添加到页面,无法如windo ...

  3. [Plugin] WEB版一次选择多个文件进行批量上传(swfupload)的解决方案

    URL:http://www.cnblogs.com/chillsrc/archive/2010/02/21/1670594.html 说明:功能完全支持ie和firefox浏览器! 一般的WEB方式 ...

  4. JAVA图片批量上传JS-带预览功能

    这篇文章就简单的介绍一个很好用的文件上传工具,批量带预览功能.直接贴代码吧,都有注释,很好理解. HTML页面 <!DOCTYPE html> <%@ taglib prefix=& ...

  5. java”伪“批量上传

    jsp页面代码 <form method="post" action="" enctype="multipart/form-data" ...

  6. WEB版一次选择多个文件进行批量上传(Plupload)的解决方案

    WEB版一次选择多个文件进行批量上传(Plupload)的解决方案  转载自http://www.cnblogs.com/chillsrc/archive/2013/01/30/2883648.htm ...

  7. WEB版一次选择多个文件进行批量上传(WebUploader)的解决方案

    本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...

  8. asp.net+swfupload 多图片批量上传(附源码下载)

    asp.net的文件上传都是单个文件上传方式,无法执行一次性多张图片批量上传操作,要实现多图片批量上传需要借助于flash,通过flash选取多个图片(文件),然后再通过后端服务进行上传操作. 本次教 ...

  9. Java Miniui实现批量上传文件demo 201906221520

    可能需要的jar包: 需要miniui(类似easyui). Test2019062201.jsp <%@ page language="java" contentType= ...

随机推荐

  1. SQL pivot 基本用法 行列转换 数据透视

    SQL通过pivot进行行列转换 数据透视 可直接在sql server 运行 传统操作 和 pivot create table XKCl (name nchar(10) not null, 学科 ...

  2. C++ Const引用详解

    (1)       在实际的程序中,引用主要被用做函数的形式参数--通常将类对象传递给一个函数.引用必须初始化. 但是用对象的地址初始化引用是错误的,我们可以定义一个指针引用. 1 int ival ...

  3. Java并发包源码学习之AQS框架(二)CLH lock queue和自旋锁

    上一篇文章提到AQS是基于CLH lock queue,那么什么是CLH lock queue,说复杂很复杂说简单也简单, 所谓大道至简: CLH lock queue其实就是一个FIFO的队列,队列 ...

  4. CAN总线 SJA1000中断

    背景: 最近一直在使用C8051F340 + SJA1000来实现CAN通信,就SJA1000部分做个记录. 正文: 整个系统结构拓扑图如下: 两路CAN,C8051F340作为CPU,处理CAN与U ...

  5. 大数据之sqoop

    一.安装: 1 解压然后把mysql的驱动放在$SQOOP_HOME/lib 目录中2. conf/sqoop-en.sh export HADOOP_COMMON_HOME=/home/hadoop ...

  6. Java NIO与IO的区别和比较

    传统的socket IO中,需要为每个连接创建一个线程,当并发的连接数量非常巨大时,线程所占用的栈内存和CPU线程切换的开销将非常巨大.使用NIO,不再需要为每个线程创建单独的线程,可以用一个含有限数 ...

  7. python __name__

    当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...

  8. [codeforces 339]D. Xenia and Bit Operations

    [codeforces 339]D. Xenia and Bit Operations 试题描述 Xenia the beginner programmer has a sequence a, con ...

  9. linux kernel 字符设备详解

    有关Linux kernel 字符设备分析: 参考:http://blog.jobbole.com/86531/ 一.linux kernel 将设备分为3大类,字符设备,块设备,网络设备. 字符设备 ...

  10. 极客DIY:制作一个可以面部、自主规划路径及语音识别的无人机

    引言 现在大部分无人机厂商都会为第三方开发者提供无人机API接口,让他们更容易地开发无人机飞行控制应用程序,让无人机想怎么玩就怎么玩.有的API接口可以帮助开发者开发基于Web版的APP.手机APP甚 ...