下面是效果介绍:
项目目录截图:
代码介绍
1、Index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link href="<%=basePath%>css/default.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="<%=basePath%>js/swfupload.js"></script>
<script type="text/javascript" src="<%=basePath%>js/swfupload.queue.js"></script>
<script type="text/javascript" src="<%=basePath%>js/fileprogress.js"></script>
<script type="text/javascript" src="<%=basePath%>js/handlers.js"></script>
<!-- 初始化swfupload 对象-->
<script type="text/javascript">
var upload1;
window.onload = function() {
upload1 = new SWFUpload({
//提交路径
upload_url: "upload.action",
//向后台传递额外的参数
post_params: {"name" : "kaobian"},
//上传文件的名称
file_post_name: "file",
// 下面自己按照字面意思理解
file_size_limit : "102400", // 100MB
file_types : "*.*",
file_types_description : "All Files",
file_upload_limit : "10",
file_queue_limit : "0",
// 事件处理
file_dialog_start_handler : fileDialogStart,
file_queued_handler : fileQueued,
file_queue_error_handler : fileQueueError,
file_dialog_complete_handler : fileDialogComplete,
upload_start_handler : uploadStart,
upload_progress_handler : uploadProgress,
upload_error_handler : uploadError,
upload_success_handler : uploadSuccess,
upload_complete_handler : uploadComplete,
// 按钮的处理
button_image_url : "images/XPButtonUploadText_61x22.png",
button_placeholder_id : "spanButtonPlaceholder1",
button_width: 61,
button_height: 22,
// Flash Settings
flash_url : "js/swfupload.swf",
custom_settings : {
progressTarget : "fsUploadProgress1",
cancelButtonId : "btnCancel1"
},
// Debug Settings
debug: false
});
}
</script>
</head>
<body>
</div>
<div id="content">
<form action="upload.action" method="post" name="thisform" enctype="multipart/form-data">
<table>
<tr valign="top">
<td>
<div>
<div style="padding-left: 5px;">
<span id="spanButtonPlaceholder1"></span>
<!--<input type="button" value="上传" onclick="upload1.addPostParam('idname',encodeURI(document.getElementById('myFileName').value));upload1.startUpload();"/>
--><input id="btnCancel1" type="button" value="Cancel Uploads" onclick="cancelQueue(upload1);" disabled="disabled" style="margin-left: 2px; height: 22px; font-size: 8pt;" />
<br />
</div>
<div class="fieldset flash" id="fsUploadProgress1">
<span class="legend">文件上传</span>
</div>
</div>
</td>
</tr>
</table>
</form>
</div>
</body>
</html>
Upload.action
package com.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadAction extends ActionSupport {
private File file;
private String fileFileName;
private String fileContentType;
private String savePath;
public String execute() throws Exception {
InputStream is = new FileInputStream(file);
String root = getSavePath();
//String tempName = System.currentTimeMillis()+this.getFileFileName().substring(this.getFileFileName().indexOf("."));
File deskFile = new File(root, this.getFileFileName());
OutputStream os = new FileOutputStream(deskFile);
byte[] bytefer = new byte[1024];
int length = 0;
while ((length = is.read(bytefer)) != -1) {
os.write(bytefer, 0, length);
}
os.close();
is.close();
return "success";
}
public String getSavePath() {
return ServletActionContext.getServletContext().getRealPath(savePath);
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileFileName) {
this.fileFileName = fileFileName;
}
public String getFileContentType() {
return fileContentType;
}
public void setFileContentType(String fileContentType) {
this.fileContentType = fileContentType;
}
}
Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 配置struts2.1.8 上传是文件的最大限制为100M -->
<constant name="struts.multipart.maxSize" value="104857600" />
<!-- 设置struts2 上传文件时 保存的临时目录 -->
<constant name="struts.multipart.saveDir" value="C:\temp"></constant>
<package name="struts2" extends="struts-default">
<action name="upload" class="com.action.FileUploadAction">
<param name="savePath">/upload</param>
<result name="success">/index.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>
官方站点:
http://www.swfupload.org/
DEMO地址:
http://demo.swfupload.org/
SWFUplaod学习笔记阅读顺序
一、了解SWFUpload
http://hanxin0311.iteye.com/blog/1915611
二、详细介绍SWFUpload
http://hanxin0311.iteye.com/blog/1915615
三、struts2+swfUpload简单例子
http://hanxin0311.iteye.com/blog/1915626
四、struts2+swfUpload深度整合
http://hanxin0311.iteye.com/blog/1915628
SWFUpload像服务器传递参数
http://hanxin0311.iteye.com/blog/1913946
SWFUpload接受服务器Action返回的参数
http://hanxin0311.iteye.com/blog/1915644
SWFUpload中文乱码问题
http://hanxin0311.iteye.com/blog/1915648
附件提供代码下载
项目开发工具 myeclipse8.5
下载代码 (如果附件不能下载点击此处下载)
- 大小: 4.8 KB
- 大小: 24 KB
- 大小: 26.1 KB
分享到:
相关推荐
在这个"四、struts2+swfUpload例子二"中,我们将深入探讨如何将这两者结合,以实现高效的文件上传功能。 首先,为了集成Struts2和SwfUpload,我们需要在项目中引入相应的依赖库。对于Struts2,这通常包括struts2-...
Struts2和SwfUpload是两个在Web开发中用于文件上传的工具,它们结合使用可以提供一种具有用户体验优化的文件上传功能,特别是包含了进度条显示,使得用户能够清晰地了解文件上传的状态。以下是对这两个技术及其结合...
2. **创建Struts Action**:在Struts框架中创建一个Action类,用于接收SwfUpload上传的文件。这个Action需要继承自Struts的抽象类,并覆盖上传方法。 3. **处理上传请求**:在Action的上传方法中,使用Java的IO流...
Struts2和SwfUpload是两个在Web开发中用于处理用户交互的重要工具,它们结合使用可以实现高效的大文件和多文件上传功能。Struts2是一个基于MVC(Model-View-Controller)架构的Java框架,它提供了强大的控制层支持,...
Struts和SwfUpload是两种在Web开发中用于构建强大功能的应用工具,它们结合使用可以实现高效的文件上传功能。在本文中,我们将深入探讨这两个组件以及如何将它们整合以实现文件上传。 首先,Struts是一个基于MVC...
在处理文件上传时,Struts2提供了一种简单的方法,但默认情况下,它可能缺乏用户友好的特性,比如文件上传进度条。在这种情况下,我们可以结合SWFUpload插件来增强用户体验。 SWFUpload是一款开源的Flash文件上传...
本项目基于JAVA、Struts2框架以及swfupload插件,提供了一个完整的文件上传下载解决方案。以下是对这个项目的详细解读: 首先,**JAVA**作为后端编程语言,以其跨平台性和丰富的库资源被广泛应用于Web开发。在这里...
NULL 博文链接:https://longhahe.iteye.com/blog/1756339
`Ext2`和`SwfUpload`是两个在创建此类功能时常用的工具。本文将深入探讨这两个技术,以及如何利用它们构建一个现代化的文件上传框。 首先,让我们了解`Ext2`。ExtJS是一个JavaScript库,它提供了一套强大的组件模型...
本例程“一个Ext2+SWFUpload做的图片上传对话框”提供了一个高效且用户友好的解决方案,用于在Web应用中实现图片上传。下面我们将详细探讨这个例程涉及的技术和知识点。 首先,`Ext2`是Ext JS的一个早期版本,这是...
jquery+SWFUpload+COS上传组件的使用 jquery+SWFUpload+COS上传组件的使用jquery+SWFUpload+COS上传组件的使用jquery+SWFUpload+COS上传组件的使用jquery+SWFUpload+COS上传组件的使用jquery+SWFUpload+COS上传组件...
本示例解决了strut2+swfupload+extjs4文件上传过程中,后台struts接收不到上传文件的问题。而这个问题如果用servlet做后台可能就不存在。开发者可以用本例源码移植到自己项目中使用 。
2. **集成jQuery**:接着,引入jQuery库,并编写JavaScript代码来初始化SwfUpload实例,绑定事件处理器,如`fileDialogComplete`(文件选择完成后触发)、`uploadProgress`(文件上传进度更新时触发)和`...
"ext struts2 swfupload 跨域文件上传"这个主题涉及到三个关键技术和概念:EXTJS(Ext JS)、Struts2以及SwfUpload,它们共同解决了Web应用中的跨域文件上传问题。 EXTJS是一种强大的JavaScript库,用于构建富...
2. **初始化SWFUpload**:在JavaScript中,使用SWFUpload的配置对象设置上传参数,如URL(Servlet的地址)、文件类型限制、最大文件大小等,并创建SWFUpload实例。 3. **事件监听**:设置SWFUpload的事件监听器,...
在这个场景下,"ThinkPHP+swfupload多图上传" 提供了一种解决方案。本文将深入探讨这两个技术如何结合,以及它们在实现多图上传时的关键知识点。 首先,让我们了解下ThinkPHP。ThinkPHP是一个基于PHP的开源框架,它...
在本实例中,我们关注的是如何在ASP中整合SWFUpload工具,这是一款流行的JavaScript和Flash结合的文件上传组件。SWFUpload允许用户在后台批量上传大文件,提供了丰富的自定义选项和进度条功能,极大地提升了用户体验...
Struts2和SWFupload是两个在Web开发中常见的组件。Struts2是一个基于MVC设计模式的Java Web框架,而SWFupload则是一个JavaScript库,用于实现Flash的文件上传功能。两者结合使用时,可能会遇到一些冲突问题,主要是...