`
阅读更多
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>Insert title here</title>
<script src="common/js/jquery.js" type="text/javascript"></script>
<script src="common/js/ajaxfileupload.js" type="text/javascript"></script>
<script>
/** 利用ajax方式上传文件 **/
function uploadFile(){
	$.ajaxFileUpload({
		url : 'TestServlet?action=upload',
		secureuri : false,
		fileElementId : 'fileC',
		dataType: 'text',
		success : function(data,status){
			if(data.indexOf("上传文件失败!")==-1){
				var oldFileName = data.split("|")[0];
				var newFileName = data.split("|")[1];
				var fileListValue = $("#uploadFileList").html();
				var obj = $("#uploadFileList");
				var content = fileListValue+"<span id='fileList"+newFileName+"'><br/><a href=\"javascript:downLoadFile('"+data+"')\">"+oldFileName+"</a>&nbsp;&nbsp<img src='common/images/X.gif' onClick=\"deleteFile('"+newFileName+"')\" /></span>";
				obj.html(content);
			}
		},
	    error: function (data, status, e)             //相当于java中catch语句块的用法
	    {
	    	alert("上传文件失败!");
	    }
	});
}

/** 删除上传的文件 **/
function deleteFile(fileName){
	$.ajax({   
	    type : "post",   
	    url : "TestServlet?action=deleteFile",  
	    data : "fileName="+fileName,   
	    success:function(msg){
	  		alert(msg);
	  		if(msg == "删除成功!"){
	  			var t = "fileList"+fileName;
	  			var ttt = document.getElementById(t);
	  			ttt.innerHTML = "";
	  		}  
	    }
	}) 
}

/** 下载文件 **/
function downLoadFile(fileName){
	window.location.href = "TestServlet?action=downLoadFile&fileName="+encodeURIComponent(encodeURIComponent(fileName));
}
</script>
</head>
<body>
<form name="frm" id="frm"  method="POST" enctype="multipart/form-data">
<input type="file" name="fileC" id="fileC" style="width:400px;height:25px"/>
<input type="button" name="upload" id="upload" value="上传文件" onClick="uploadFile()"/>
<br/><span id="uploadFileList"></span>
</form>
</body>
</html>

 

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class TestServlet extends HttpServlet {
	public TestServlet() {
		super();
	}

	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");// 设置编码方式,保证返回到前台中文不乱码
		request.setCharacterEncoding("UTF-8");// 设置编码方式,保证从前台到后台中文不乱码
		response.setCharacterEncoding("UTF-8");
		String action = request.getParameter("action");
		if (action.equals("upload")) {
			upload(request, response);
		} else if (action.equals("deleteFile")) {
			deleteFile(request, response);
		} else if(action.equals("downLoadFile")){
			downLoadFile(request, response);
		}
	}

	public void init() throws ServletException {
		// Put your code here
	}

	/**
	 * 上传文件
	 * 
	 * @param request
	 * @param response
	 * @throws ServletException
	 * @throws IOException
	 */
	public void upload(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String result = "";
		try {
			result = UpFile(request);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			result = "上传文件失败!";
		}
		System.out.println(result);
		response.getWriter().print(result);
	}

	/**
	 * 删除上传的文件
	 * 
	 * @param request
	 * @param response
	 * @throws ServletException
	 * @throws IOException
	 */
	public void deleteFile(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		String result = "";
		String fileName = request.getParameter("fileName");
		try {
			boolean b = false;
			b = deleteFileDao(fileName);
			if (b) {
				result = "删除成功!";
			} else {
				result = "删除失败!";
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			result = "删除文件失败!";
		}
		response.getWriter().print(result);
	}
	
	/**
	 * 下载文件
	 * @param request
	 * @param response
	 * @throws ServletException
	 * @throws IOException
	 */
	public void downLoadFile(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		String fileName = java.net.URLDecoder.decode(request.getParameter("fileName"),"UTF-8");//后台转编码一次成中文
		String[] fileNameAll = fileName.split("\\|");
		String oldFileName = fileNameAll[0];
		String newFileName = fileNameAll[1];
		String filePath = this.getServletConfig().getServletContext().getRealPath("/");
		File file = new File(filePath + "uploaded\\" + newFileName);
		response.setContentType("application/x-msdownload");
		response.setContentLength((int) file.length());
		response.setHeader("Content-Disposition", "attachment;filename=" + new String(oldFileName.getBytes("GBK"), "ISO8859_1"));//保证另存为文件名为中文
		FileInputStream fis = new FileInputStream(file);
		BufferedInputStream bis = new BufferedInputStream(fis);
		byte[] b = new byte[1024];
		long k = 0;

		OutputStream out = response.getOutputStream();
		while (k < file.length()) {
			int j = bis.read(b, 0, 1024);
			k += j;
			out.write(b, 0, j);
		}
		out.close();
		bis.close();
		fis.close();
	}


	/**
	 * 上传文件
	 * 
	 * @param req
	 * @return
	 * @throws Exception
	 */
	public String UpFile(HttpServletRequest req) throws Exception {// 上传文件
	// req.setCharacterEncoding("UTF-8");//设置编码方式,让上传的文件(中文)不会出现乱码
		String fileName = "";
		String filePath = this.getServletConfig().getServletContext()
				.getRealPath("/");
		File saveDir = new File(filePath + "uploaded");
		if (!saveDir.isDirectory()) {
			saveDir.mkdir();
		}
		DiskFileItemFactory dff = new DiskFileItemFactory();// 创建该对象
		dff.setRepository(saveDir);// 指定上传文件的临时目录
		dff.setSizeThreshold(1024000);// 指定在内存中缓存数据大小,单位为byte
		ServletFileUpload sfu = new ServletFileUpload(dff);// 创建该对象
		sfu.setSizeMax(50000000);// 指定单个上传文件的最大尺寸
		List items = sfu.parseRequest(req);// 解析request //
		// 请求,并返回FileItemIterator集合
		Iterator iter = items.iterator();
		while (iter.hasNext()) {
			FileItem fis = (FileItem) iter.next();// 从集合中获得一个文件流
			if (!fis.isFormField()) {// 过滤掉表单中非文件域
				fileName = fis.getName().substring(
						fis.getName().lastIndexOf("\\") + 1);// 获得上传文件的文件名
				String hzm = fileName.substring(fileName.indexOf('.'));// 获取文件的后缀名
				String nameString = getNewFileName() + hzm;// 新生成的文件名称
				fis.write(new File(saveDir + "\\" + nameString));
				fileName = fileName + "|" + nameString;
			}
		}
		return fileName;
	}

	/**
	 * 删除文件
	 * 
	 * @param fileName
	 * @return
	 */
	public boolean deleteFileDao(String fileName) {
		boolean b = false;
		String filePath = this.getServletConfig().getServletContext()
				.getRealPath("/");
		File file = new File(filePath + "uploaded\\" + fileName);
		if (file.exists()) {
			file.delete();
			b = true;
		}
		return b;
	}

	/**
	 * 生成新文件名称(年月日时分秒+二位随机码)
	 * 
	 * @return
	 */
	public String getNewFileName() {
		String newFileName = "";
		Date date = new Date();
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
				"yyyyMMddHHmmss");
		newFileName = simpleDateFormat.format(date);
		String random = getRandom(2);
		return newFileName + random;
	}

	/**
	 * 获取n位随机数
	 * 
	 * @param n
	 * @return
	 */
	public String getRandom(int n) {
		String randomString = "";
		if (n == 1) {
			randomString = (int) (Math.random() * 10) + "";
		} else {
			randomString = getRandom(n - 1) + (int) (Math.random() * 10);
		}
		return randomString;
	}
}

 

分享到:
评论
1 楼 wjw905266 2012-12-03  
整个jar包就一个js文件,项目不存在。

相关推荐

    servlet 文件上传下载例子

    在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...

    jsp,servlet上传下载文件

    jsp、servlet 文件上传下载技术详解 文件上传下载是 Web 应用中的一种常见需求,使用 jsp 页面和 servlet 实现文件上传下载是其中的一种解决方案。下面将详细介绍 jsp、servlet 文件上传下载技术。 文件上传下载...

    JSP+Servlet文件上传下载实例

    在Java Web开发中,JSP(Java...总的来说,JSP+Servlet实现文件上传下载涉及到HTML表单、Servlet请求处理、文件I/O以及第三方库的使用。通过这个实例,开发者可以掌握在Java Web环境中处理文件上传下载的基本流程。

    servlet 文件上传下载

    下面将详细解释如何使用Servlet实现文件上传和下载的功能。 ### 文件上传 文件上传主要涉及以下步骤: 1. **创建HTML表单**:首先,我们需要一个HTML表单让用户选择要上传的文件。表单应包含`enctype="multipart/...

    SmartUploadservlet文件上传下载

    在Java Web开发中,文件上传和下载功能是常见的需求,特别是在构建B/S系统时。`SmartUpload`组件是一个专门用于处理此类任务的工具,它极大地简化了开发者的工作,使得在JSP环境中实现文件上传和下载变得轻而易举。...

    Servlet实现文件上传与下载

    ### Servlet实现文件上传与下载 #### 一、概述 在Web开发中,文件的上传与下载是一项非常常见的功能需求。本文将详细介绍如何使用Java Servlet技术实现文件的上传和下载功能。我们将通过一个简单的示例来展示整个...

    servlet实现文件上传下载

    总结来说,实现Servlet文件上传下载需要理解Servlet生命周期、HTTP请求处理、多部分数据解析以及文件I/O操作。Apache Commons FileUpload库简化了这一过程,但理解其背后的原理对于解决可能出现的问题和优化性能至关...

    JSP/servlet实现上传下载

    以上就是使用JSP和Servlet实现文件上传下载的基本流程和关键代码。在实际应用中,我们还需要考虑错误处理、安全性(如防止文件覆盖、上传恶意文件等)以及性能优化(如使用缓冲、断点续传等)。在大型项目中,可能还...

    使用Servlet实现文件的上传与下载

    在文件上传和下载的场景中,Servlet将扮演接收请求、处理数据并发送响应的角色。 **文件上传:** 1. **表单设计**:在HTML页面上,我们需要一个表单让用户选择要上传的文件。表单需要设置`enctype="multipart/form-...

    Http Servlet文件上传下载

    Servlet是Java提供的一种用于扩展服务器功能的接口,尤其在网络应用中,如文件上传和下载。本实例将深入讲解如何利用Http Servlet实现文件的上传与下载功能。 一、文件上传 1. **MultipartRequest**: 在Servlet中...

    Servlet文件上传、下载及缩略图的生成

    在这个项目中,我们重点关注的是Servlet如何实现文件上传、下载和缩略图的生成。 首先,让我们深入理解文件上传的过程。在Web应用中,文件上传通常通过HTML表单实现,使用`&lt;input type="file" /&gt;`标签让用户选择要...

    用servlet写的文件上传及下载功能带进度条

    自己用servlet写的文件上传及下载功能带进度条 主要用到两个jar:commons-fileupload-1.2.2.jar和commons-io-2.0.1.jar 内容介绍: com.fm.FileManagerService:一个servlet用来实现主要的文件上传下载逻辑的 ...

    1java servlet 文件上传下载删除 当然是ajax 2jstl标签定制

    包含文件 1:ajax上传删除,支持多文件实时预览; 2:jstl标签定制, ...上传使用servlet,使用跟FCK使用一样,感谢FCK,让我借鉴。支持标签定义上传类型。 当然是跨平台,支持所有浏览器 使用超级方便。

    文件上传与下载servlet

    下面将详细介绍如何使用Servlet实现文件上传和下载的功能。 ### 文件上传 文件上传通常涉及到HTTP协议中的`multipart/form-data`编码类型,这是处理表单数据中包含文件的关键。Servlet 3.0及以上版本提供了更方便...

    Servlet中文件上传和下载

    总结起来,Servlet中的文件上传和下载涉及到HTTP多部分请求、文件流操作、响应头设置等多个方面。通过JSP和Javabean,我们可以更方便地在页面上与用户交互,同时封装和管理业务逻辑。理解并熟练掌握这些技术,对于...

    Servlet文件上传和下载

    JavaServlet文件上传和下载,java初学者笔记!

    jsp+servlet实现文件上传下载

    ### jsp+servlet实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...

    Java servlet 和 swf上传超大文件源码

    Java Servlet和SWFUpload是两种不同的技术,但它们在处理大文件上传方面有着共同的应用。在Web开发中,用户可能需要上传大文件,如视频、音频或大型文档,这就需要服务器端具有处理大文件上传的能力。Java Servlet是...

    文件上传下载servlet自用

    在IT行业中,文件上传下载是Web应用中常见的功能,尤其在服务器端编程中,Servlet扮演着重要的角色。Servlet是Java编程语言中用于扩展服务器功能的接口,它可以在接收到HTTP请求后进行处理,并向客户端返回响应。在...

    【Demo Project】ajaxSubmit+Servlet表单文件上传和下载

    【AjaxSubmit+Servlet实现表单文件上传与下载详解】 在Web开发中,文件上传和下载是常见的功能,尤其是在用户交互丰富的应用中。本项目【Demo Project】利用AjaxSubmit结合Servlet技术,提供了一种高效、异步的方式...

Global site tag (gtag.js) - Google Analytics