1、JSP页面:
JS控制增加删除多个上传文件框,代码如下:
2、Action后台处理上传文件:
-
-
private List<File> uploadFile;
-
-
private List<String> uploadFileFileName;
-
-
public String mUploadFile() {
-
if (null == uploadFile) {
-
this.addActionError("请上传文件!");
-
} else {
-
String fileName = "";
-
try {
-
-
String directory = ServletActionContext.getServletContext().getRealPath("/uploads");
-
- FileUtil.makeDir(directory);
-
-
for(int i=0,j=uploadFile.size();i<j;i++){
- fileName = uploadFileFileName.get(i);
- String filePath = directory + File.separator + fileName;
-
FileUtil.uploadFile(uploadFile.get(i), new File(filePath));
- }
-
} catch (IOException e) {
-
this.addActionMessage("");
- }
-
this.addActionMessage("文件上传成功!");
- }
-
return "fileUpload";
- }
FileUtil代码如下:
- public class FileUtil {
-
-
private static final int BUFFER_SIZE = 16 * 1024;
-
-
public static void uploadFile(File src, File dst) throws IOException {
-
-
InputStream in = null;
-
OutputStream out = null;
-
try {
-
in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);
-
out = new BufferedOutputStream(new FileOutputStream(dst),
- BUFFER_SIZE);
-
byte[] buffer = new byte[BUFFER_SIZE];
-
while (in.read(buffer) > 0) {
- out.write(buffer);
- }
-
} finally {
-
if (null != in) {
- in.close();
- }
-
if (null != out) {
- out.close();
- }
- }
-
- }
-
-
public static String getExtention(String fileName) {
-
int pos = fileName.lastIndexOf(".");
-
return fileName.substring(pos);
- }
-
-
public static void makeDir(String directory) {
-
File dir = new File(directory);
-
-
if (!dir.isDirectory()) {
- dir.mkdirs();
- }
-
- }
-
-
public static String generateFileName(String fileName)
-
throws UnsupportedEncodingException {
-
DateFormat format = new SimpleDateFormat("yyMMddHHmmss");
-
String formatDate = format.format(new Date());
-
String extension = fileName.substring(fileName.lastIndexOf("."));
-
fileName = new String(fileName.getBytes("iso8859-1"), "gb2312");
-
return fileName + "_" + formatDate + new Random().nextInt(10000)
- + extension;
- }
-
- }
扩展:
1.可以实现带进度条的上传与下载;
2.可以用xml文件记录上传的文件清单,并且可以根据页面对上传文件的操作来修改相应的xml文件;
分享到:
相关推荐
描述中提到"研究了半天的ExtJs+Struts2多文件上传",暗示这个项目可能包含了一种或多文件同时上传的解决方案。在多文件上传中,用户可以选择多个文件,一次性上传,这在现代Web应用中非常常见,例如图片库、文档分享...
通过以上步骤,我们可以利用ExtJS的用户界面和Struts2的后台处理能力,实现一个完整的多文件上传功能。这个功能不仅提高了用户体验,还简化了开发流程。在实际项目中,还可以进一步优化,例如添加进度条显示、预览...
本教程将详细讲解如何利用SWFUpload与Struts2框架来实现多文件上传的示例。 首先,让我们了解SWFUpload。SWFUpload是一款开源的Flash上传组件,它允许用户在不离开当前页面的情况下上传多个文件。通过在浏览器上...
【Uploadify + Struts2 实现文件上传详解】 在Web开发中,文件上传是一个常见的功能需求,尤其是在内容管理系统、论坛或者其他需要用户提交图片、文档等资料的场景。Uploadify是一款基于jQuery的文件上传插件,它...
总的来说,"extjs3.2+struts2实现多文件上传excel并插入到数据库"项目结合了前端交互、后端处理和数据库操作,实现了一个完整的数据导入流程。开发者需要理解ExtJS的组件使用、Struts2的文件上传处理、Java对Excel...
在文件上传场景中,Struts2主要负责接收前端发送的文件数据,并将这些数据存储到服务器的指定位置。配置Struts2的Action类和相应的XML配置文件,可以定义文件上传的处理逻辑。 接着,jQuery是一个高效、简洁的...
- `config`:配置文件目录,可能包含Struts2的配置文件(如struts.xml)、MyBatis的配置文件(如mybatis-config.xml和Mapper XML文件)以及数据库连接配置等。 - `WebContent`:Web应用的根目录,包含静态资源(如...
在本文中,我们将深入探讨如何使用`ajaxFileUpload`与`Struts2`框架结合,实现多文件上传功能。这个示例源码提供了一个实用的方法,使得用户可以在不刷新整个页面的情况下,上传多个文件,提高了用户体验。 首先,`...
总之,“struts2+easyui+uploadfye文件上传”项目是一个结合了后端处理、前端展示和异步上传功能的典型示例,它展示了如何利用现有技术解决实际开发中的问题,对于学习和理解这些技术的集成应用具有很高的参考价值。
Uploadify是一款基于jQuery的插件,它提供了文件上传的高级功能,包括多文件选择、进度条显示、错误处理等。在我们的Demo中,Uploadify将负责在用户选择图片后,通过异步方式将这些文件上传到服务器。Uploadify支持...
在"Ext_struts2"这个文件中,可能包含了一个示例项目,展示了如何将EXT与Struts2结合实现文件上传的全过程。这个项目的源码可能包括以下几个部分: 1. HTML/JS:EXT的前端界面,包括文件选择按钮和上传触发器。 2. ...
这些文件共同构成了一个完整的Struts2文件上传示例。 总的来说,"jquery+struts2+upload"的组合是一个经典的Web开发实践,它展示了如何利用jQuery进行前端交互,通过Struts2处理后端业务,并实现文件上传这一常见的...
本示例将详细讲解如何在Struts2框架下实现多文件上传。 首先,我们需要在HTML页面上创建上传表单。表单应包含多个`<input type="file">`元素,以便用户可以选择多个文件。由于浏览器的安全限制,HTML5之前不允许...
在本文中,我们将深入探讨如何使用JavaScript(JS)与Struts2框架实现多文件上传功能。这个实例将帮助我们理解如何在Web应用中处理用户选择的多个文件,并将其上传到服务器。 首先,让我们看下JSP页面的部分代码。...
Struts2和Uploadify是两种在Web开发中用于文件上传的技术。Struts2是一个基于MVC(模型-视图-控制器)设计模式的Java Web框架,它提供了强大的表单处理和动作调度功能。Uploadify则是一个JavaScript库,利用Flash...
Java Struts2 文件上传是Java Web开发中常见的一项功能,特别是在处理大文件时,需要考虑性能和用户体验。Struts2框架提供了丰富的插件和配置来支持文件上传,其中包括进度条显示,以提升用户交互体验。以下是对这个...
Struts2的核心功能包括动作映射、拦截器、结果类型和插件等,它提供了丰富的特性,如国际化、数据验证和文件上传等。在本示例中,“StrutsJson”可能是服务端的一个模块,它利用Struts2的JSON结果类型来发送和接收...
总的来说,"struts2+ajax文件进度条的实现"是一个典型的前后端协同工作的示例,它展示了如何在Java web应用中优化用户体验,特别是在处理大文件上传时。通过理解Ajax的工作原理、Struts2的文件上传机制以及前端组件...
总之,这个项目实例为使用Struts2和Uploadify实现带进度条的多文件上传及下载功能提供了一个基础模板,对于学习和实践此类功能的开发者来说是一个有价值的参考。通过深入研究和理解这个项目的代码,可以提升对Struts...
在本文中,我们将深入探讨如何在Java环境下,结合Struts2框架和jQuery的uploadify插件实现文件上传功能,特别是解决中文乱码问题。这个功能对于任何需要用户交互式上传内容的Web应用都是至关重要的。 首先,jQuery ...