<!DOCTYPE html >
<html>
<head>
<meta charset="UTF-8">
<title>使用JSP+Servlet实现文件的上传下载</title>
</head>
<script type="text/javascript" src="js/jquery-1.11.1.js"></script>
<body><h2>使用JSP+Servlet实现文件的上传下载</h2><form action="uploadServlet" method="post" enctype="multipart/form-data" >请选择文件:<input id="file" name="file" type="file" /><input type="submit" value="上传"  />${result}**这里一定要注意,表单的method一定要使用post方式,其它的就很简单了,至于${result}这种语句是EL表达式。**</form>下载:<a href="downloadServlet?filename=FileTest.txt">fileTest.txt</a> ${errorResult}
</body>
</html>
package com.dw.servlet;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class UploadServlet extends HttpServlet {private static final long serialVersionUID = 1L;public UploadServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");//更改响应字符流使用的编码,还能告知浏览器用什么编码进行显示//从request中获取文本输入流信息InputStream fileSourceStream = request.getInputStream();String tempFileName = "F:/tempFile";//设置临时文件,保存待上传的文本输入流File tempFile = new File(tempFileName);//outputStram文件输出流指向这个tempFileFileOutputStream outputStream = new FileOutputStream(tempFile);//读取文件流byte temp[] = new byte[1024];int n;while(( n = fileSourceStream.read(temp)) != -1){outputStream.write(temp, 0, n);}outputStream.close();fileSourceStream.close();//获取上传文件的名称 RandomAccessFile randomFile = new RandomAccessFile(tempFile,"r");randomFile.readLine();  String str = randomFile.readLine();int start = str.lastIndexOf("=") + 2;int end = str.lastIndexOf("\"");String filename = str.substring(start, end);//定位文件指针到文件头randomFile.seek(0);long startIndex = 0;int i = 1;//获取文件内容的开始位置while(( n = randomFile.readByte()) != -1 && i <=4){if(n == '\n'){startIndex = randomFile.getFilePointer();i ++;}}startIndex = startIndex -1; //这里一定要减1,因为前面多读了一个,这里很容易忽略//获取文件内容结束位置randomFile.seek(randomFile.length());long endIndex = randomFile.getFilePointer();int j = 1;while(endIndex >=0 && j<=2){endIndex--;randomFile.seek(endIndex);if(randomFile.readByte() == '\n'){j++;}}//设置保存上传文件的路径String realPath =  "F:/file";File fileupload = new File(realPath);if(!fileupload.exists()){fileupload.mkdir();}File saveFile = new File(realPath,filename);RandomAccessFile randomAccessFile = new RandomAccessFile(saveFile,"rw");//根据起止位置从临时文件中读取文件内容randomFile.seek(startIndex);while(startIndex < endIndex){randomAccessFile.write(randomFile.readByte());startIndex = randomFile.getFilePointer();}//关闭输入输出流并 删除临时文件randomAccessFile.close();randomFile.close();tempFile.delete();request.setAttribute("result", "文件上传成功");RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");dispatcher.forward(request, response);}
}
package com.dw.servlet;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownloadServlet extends HttpServlet {private static final long serialVersionUID = 1L;public DownloadServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setCharacterEncoding("utf-8");//获取文件下载路径String path = "F:/file/";String filename = request.getParameter("filename");File file = new File(path + filename);if(file.exists()){//设置相应类型让浏览器知道用什么打开  用application/octet-stream也可以,看是什么浏览器response.setContentType("application/x-msdownload");//设置头信息response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");InputStream inputStream = new FileInputStream(file);ServletOutputStream ouputStream = response.getOutputStream();byte b[] = new byte[1024];int n ;while((n = inputStream.read(b)) != -1){ouputStream.write(b,0,n);}//关闭流ouputStream.close();inputStream.close();}else{request.setAttribute("errorResult", "文件不存在,下载失败!");RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp");dispatcher.forward(request, response);}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request,response);}}

https://github.com/zhanlong-dw/fileuploadanddownload

使用JSP+Servlet实现文件的上传下载上传相关推荐

  1. jsp 如何上传文件到服务器上,如何使用JSP / Servlet将文件上传到服务器?

    问题: How can I upload files to server using JSP/Servlet? 如何使用JSP / Servlet将文件上传到服务器? I tried this: 我尝 ...

  2. c语言 上传图片至服务器,JSP+Servlet实现文件上传到服务器功能

    本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao.service.servlet 这 ...

  3. Jsp/Servlet:实现文件上传与下载

    1.客户端上传文件 客户端通过一个Jsp页面,上传文件到服务器,该Jsp页面必须含有File类表单,并且表单必须设置enctype="multipart/form-data".提交 ...

  4. jsp+servlet实现文件的上传和下载

    实现文件的上传和下载首先需要理解几个知识,这样才可以很好的完成文件的上传和下载: (1):上传文件是上传到服务器上,而保存到数据库是文件名 (2):上传文件是以文件转换为二进制流的形式上传的 (3): ...

  5. 如何用JSP+Servlet实现文件上传下载

    目录 一.辛老师教程 一.需要的文件: 二.上传步骤: 三.下载步骤 二.代码 1.前端 2.后端 3.web.xml 三.梳理框架 1.前端 2.后端 一.辛老师教程 一.需要的文件: (3条消息) ...

  6. ACTIVEX实现大文件FTP上传下载---上

    ACTIVEX实现大文件FTP上传 在Windows 操作系统下,有一个重要的机制,就是OLE ,就是可以让某个应用程序(OLE Controller)访问其它应用程序(OLE Server)所提供的 ...

  7. html网页上传到服务器_JSP+Servlet实现文件上传到服务器功能

    本文实例为大家分享了JSP+Servlet实现文件上传到服务器功能的具体代码,供大家参考,具体内容如下 项目目录结构大致如下: 正如我在上图红线画的三个东西:Dao.service.servlet 这 ...

  8. 后台学习六---ajaxFileupload文件上传下载

    这一章讲讲文件的上传下载,这里我们使用ajax的上传文件方法. ps:基于maven的springmvc框架都已经搭建好了的,如有问题,参考 : 后台学习一-spring+maven+mybatis+ ...

  9. 处理文件工具类(批量上传,下载)

    ================================================================ 注意:此使用jsp+servlet进行文件的上传与下载测试,以及在ss ...

最新文章

  1. dbms_stats包更新、导出、导入、锁定统计信息
  2. ThinkPHP的增、删、改、查
  3. 2016.8-2017.1 六履带四摆臂移动机器人测控系统
  4. mysql php错误处理函数_PHP 错误处理
  5. java 什么是内部类_讨论Java中的内部类是什么?
  6. 简单明白彻底解决 MySQL 中文编码问题
  7. VsCode+PicGO+腾讯云实现快速上传markdown图床
  8. 数据库中状态表的设计
  9. 2016年总结与2017展望
  10. 不重复的三位数python_Python趣味案例之不重复的三位数
  11. 七月份的尾巴是狮子座
  12. C#chart控件如何同时显示两条曲线?
  13. ElasticJob源码部分解读-Zookeeper建立连接
  14. springboot+vue旅游景点酒店预订系统网站
  15. numpy.random.normal函数
  16. php for循环删除元素,php-在foreach循环中取消设置数组值
  17. 关于密室逃脱的最终解决方案。
  18. Python小白到老司机,快跟我上车!基础篇(二十)
  19. windows server上重启IIS命令
  20. css所有缩写属性,CSS属性简写整理

热门文章

  1. uni-app语音转文字(百度篇)
  2. 选择有限时间内最多的活动数 贪心
  3. Did you know?
  4. configure:13646: error: possibly undefined macro: AC_MSG_ERROR
  5. 2021 祥云杯 pwn-PassWordBox_ProVersion
  6. NodeJS框架学习-Egg框架
  7. c++ 中指针数组 数组指针 new
  8. 如何使用timeit模块
  9. 频率检测模块FD(frequency detect)
  10. 小赢理财招聘 测试开发、专项