此例子是基于jspsmartupload组件的,jspsmartupload是一个不错的上传下载组件,但对中文支持不足。若下载的文件名中有汉字,则浏览器在提示另存的文件名时,显示的是一堆乱码,让人看了很不舒服,为此,有人专门修改此组件,做了编码的转换工作,将文件名转换为UTF-8形式的编码形式。我用的是网上修改过的,已经可以支持中文,相信你也可以找到,如果需要,可以联系我,我会在第一时间发给你!jar down:

http://cid-75be94924ba7fb04.skydrive.live.com/self.aspx/Public/SmartUpload%5E_zh%5E_CN.jar

在网上找了很多相关资料,自己也添加了一些js代码,基本实现了动态添加删除多文件上传的功能,如果想要做得更完美,或者把文件上传下载信息存储到数据库等,那就自己去完善了,以下是所有的源代码:

(文件下载出于安全考虑是按流的方式来进行的,而不是直接给出文件下载路径地址,所以像迅雷等下载工具是不能下载的)

首先当然是上传下载的页面了,upfile.jsp

File Upload

function addFile(){

var upFile = '
';

document .getElementById ("files").insertAdjacentHTML("beforeEnd",upFile);

}

function deleteFile(){

var file = document .getElementById ("files").lastChild;

if(file == null)

return;

document .getElementById ("files").removeChild(file);

file = document .getElementById ("files").lastChild; //移除换行符
所以要移两次

document .getElementById ("files").removeChild(file); //如果在表格里面不加
就自动换行的,可以去掉,自己把握

}

基于jsp smart upload组件的文件上传下载

选择文件:

下载文件的名称:

上传文件UploadServlet类:

package com.xml.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.jspsmart.upload.SmartUpload;

public class UploadServlet extends HttpServlet {

private ServletConfig config;

public UploadServlet() {

super();

}

public void destroy() {

super.destroy(); // Just puts "destroy" string in log

}

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

int count = 0; // 记录文件上传总个数

SmartUpload mySmartUpload = new SmartUpload();

mySmartUpload.initialize(config, request, response);

try {

// mySmartUpload.setAllowedFilesList("rar,htm,html,jar");//设置允许上传的文件

mySmartUpload.setDeniedFilesList("exe,jsp,asp");// 禁止上传的文件

mySmartUpload.setDenyPhysicalPath(true); // 拒绝物理路径

mySmartUpload.setMaxFileSize(5000000);// 设置允许上传文件最大为50000bytes

mySmartUpload.setTotalMaxFileSize(50000000);// 一次上传文件大小最多不超过5000000bytes

mySmartUpload.upload();

for (int i = 0; i < mySmartUpload.getFiles().getCount(); i++) {

com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(i);

String fileName = myFile.getFileName();

System.out.println("文件名:" + fileName);

}

count = mySmartUpload.save("/upload");

System.out.println(count + "文件已上传");

} catch (Exception e) {

e.printStackTrace();

}

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

public void init(ServletConfig config) throws ServletException {

this.config = config;

}

}

下载文件DownloadServlet类:

package com.xml.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.jspsmart.upload.SmartUpload;

import com.jspsmart.upload.SmartUploadException;

public class DownloadServlet extends HttpServlet {

private ServletConfig config;

public DownloadServlet() {

super();

}

public void destroy() {

super.destroy(); // Just puts "destroy" string in log

}

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String temp_fileName = request.getParameter("downloadFileName");

if (temp_fileName == null || temp_fileName == "")

return;

byte[] temp_t = temp_fileName.getBytes("ISO8859_1");

String fileName = new String(temp_t, "GBK");

SmartUpload mySmartUpload = new SmartUpload();

mySmartUpload.initialize(config, request, response);

mySmartUpload.setContentDisposition(null);

/*

* 原型:public void setContentDisposition(String contentDisposition)

* 其中,contentDisposition为要添加的数据。

* 如果contentDisposition为null,则组件将自动添加"attachment;",

* 以表明将下载的文件作为附件,结果是IE浏览器将会提示另存文件,而不是自动打开这个文件

* (IE浏览器一般根据下载的文件扩展名决定执行什么操作,扩展名为doc的将用word程序打开,

* 扩展名为pdf的将用acrobat程序打开,等等)。

*/

try {

mySmartUpload.downloadFile("/upload/" + fileName);

} catch (SmartUploadException e) {

e.printStackTrace();

}

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doGet(request, response);

}

public void init(ServletConfig config) throws ServletException {

this.config = config;

}

}

web.xml配置文件:

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

UploadServlet

com.xml.servlet.UploadServlet

DownloadServlet

com.xml.servlet.DownloadServlet

UploadServlet

/servlet/UploadServlet

DownloadServlet

/servlet/DownloadServlet

index.jsp

maven配置smartupload_用jspsmartupload实现Jsp多文件上传下载,并解...相关推荐

  1. 基于华为云obs实现文件上传下载(技术栈mysql+springboot+Maven+jsp+java)的技术分享

    基于华为云obs实现文件上传下载(技术栈mysql+springboot+jsp+java)的技术分享 obs实现文件上传下载 前言 一.OBS是什么? 二.使用步骤 1.1 前期准备 2 工具的内容 ...

  2. centos nfs java_CentOS下安装配置NFS并通过Java进行文件上传下载

    1:安装NFS (1)安装 yum install nfs-utils rpcbind (2)启动rpcbind服务 systemctl restart rpcbind.service 查看服务状态 ...

  3. maven 文件上传下载_使用Maven将文件上传和下载到S3

    maven 文件上传下载 多年来,我已经看到许多团队以许多不同的方式使用Maven. Maven可用于许多ci / cd任务,而无需使用额外的管道代码,或者可用于在运行某些测试之前准备开发环境. 通常 ...

  4. JSP基础:(7)jsp分页与文件上传下载

    目录 1 jsp分页 1.1 定义 1.2 Servlet控制器方法 2 文件上传下载 2.1 定义 2.2 SmartUpload 2.2.1 介绍 2.2.2 SmartUpload组件-Requ ...

  5. java jsp 文件上传_用JSP编写文件上传

    用JSP编写文件上传 发布时间:2016-09-14 来源: 点击: 次 如果你曾用VB编写文件上传的组件的话,那么用JAVA编写文件上传的JAVABEAN十分容易. 下面的例子只是一个简版 pack ...

  6. Goby 漏洞更新 | 万户 OA OfficeServer.jsp 任意文件上传漏洞

    漏洞名称:万户 OA OfficeServer.jsp 任意文件上传漏洞 English Name:ezOFFICE OA OfficeServer.jsp Arbitrarily File Uplo ...

  7. 使用jspsmartupload完成简单的文件上传系统

    请不要妄想,一个html的file控件,再加上JavaScript与jQuery语句就可以完成文件上传, 文件上传系统从来是需要配合服务器来完成的 用户把自己的文件上传到服务器上 文件上传系统是很复杂 ...

  8. JSP笔记-文件上传

    JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准.JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTM ...

  9. JSP 文件上传下载系列之一[基本方式上传文件]

    前言 在jsp的web项目中,很有可能会使用文件上传的功能. 把一个本地的文件上传到web 服务器的某个路径下. 对于java 来说, 实现这样功能的开源组件有很多, 比如较常用的commons-fi ...

  10. 文件上传下载配置失败

    1.multipartResolver注册失败,此依赖导入后仍无效 <!--文件上传--><dependency><groupId>commons-fileuplo ...

最新文章

  1. Asp.Net Web API 2第一课——入门
  2. 第十、十一周项目-阅读程序,写出这些程序的运行结果(2)
  3. 前端后分离深入分析 ——浏览器渲染和服务器渲染区别
  4. 计算机主板开机接线端子,装机必看,机箱前置面板接线向导,不怕再接错线了...
  5. hibernate dialect 方言 sqlserver2000 的方言
  6. vs2008试用期到期解决办法
  7. 配置Servlet3.0的方式和注意事项!
  8. 计划任务 crontab、at
  9. java线程异步传值_Java 多线程传值的四种方法
  10. logrotate测试_日志管理工具logrotate
  11. 韦东山第3期嵌入式Linux项目-视频监控-2-从零写USB摄像头驱动(UVC驱动)
  12. 红米K40 Pro的root步骤(MIUI12.5 稳定版 安卓11)
  13. python傅里叶谐波分析_一种利用快速三角形式傅里叶变换的信号谐波分析方法
  14. Kotlin学习教程推荐
  15. 如何解决Xcode中的SIGABRT错误
  16. 双显示器如何设置上下显示和鼠标上下进入第二屏幕?
  17. 专用VPX背板连接器
  18. 三种快排及四种优化方式
  19. MongoDB,为何能在NoSQL家族里异军突起?
  20. mysql if 多个,mysql if条件中的多个条件

热门文章

  1. JS 生成条形码(一维码)jsBarcode
  2. 使用MTK的SN writer工具写IMEI的方法
  3. CS61A lab 0:getting started
  4. 间隙锁(Gap Lock)
  5. Cuda11.6 下载与安装[排坑版]
  6. php生成盖章图片,印章图案生成器
  7. 京东android插件化,Flutter 插件开发-接入京东SDK唤醒(ios篇)
  8. 基于 OpenFlow 的 SDN 技术 (论文笔记)
  9. 艾孜尔江用JS/TS生成随机姓名
  10. 3ds Max: Substance to V-Ray Workflows 3ds Max教程:从Substance到V-Ray工作流程 Lynda课程中文字幕