首先是表单的jsp文件:upload.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>文件上传</title>
</head>
<body>
<h1>文件上传</h1><form action="message.jsp" method="post" enctype="multipart/form-data">选择一个文件:<input type="file" name="uploadFile"/><br/><br/><input type="submit" value="上传"/>
</form>
</body>
</html>

  上传处理的jsp文件:message.jsp:

<%--Created by IntelliJ IDEA.User: DELLDate: 2018/4/20Time: 14:10To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.io.*,java.util.*,javax.servlet.*,javax.servlet.http.*" %>
<%@ page import="java.rmi.ServerException" %>
<html>
<head><title></title>
</head>
<body>
<%//定义上传文件的最大字节int MAX_SIZE = 102400 * 102400;//创建根路径的保存变量String rootPath;//声明文件读入类DataInputStream in = null;FileOutputStream fileOut = null;//取得互联网程序的绝对地址String realPath = request.getSession().getServletContext().getRealPath("/");realPath = realPath.substring(0, realPath.indexOf("\\out"));
//    out.print(realPath);//创建文件的保存目录rootPath = realPath + "\\web\\upload\\";//取得客户端上传的数据类型String contentType = request.getContentType();try {if (contentType.indexOf("multipart/form-data") >= 0) {//读入上传数据in = new DataInputStream(request.getInputStream());int formDataLength = request.getContentLength();if (formDataLength > MAX_SIZE) {out.print("上传的字节不可以超过" + MAX_SIZE + "字节");return;}//保存上传文件的数据byte dataBytes[] = new byte[formDataLength];int byteRead = 0;int totalBytesRead = 0;//上传的数据保存在byte数组里面while (totalBytesRead < formDataLength) {byteRead = in.read(dataBytes, totalBytesRead, formDataLength);totalBytesRead += byteRead;}//根据byte数组创建字符串String file = new String(dataBytes, "utf-8");//取得上传数据的文件名String saveFile = file.substring(file.indexOf("filename=\"") + 10);saveFile = saveFile.substring(0, saveFile.indexOf("\n"));saveFile = saveFile.substring(saveFile.lastIndexOf("\\") + 1, saveFile.indexOf("\""));int lastIndex = contentType.lastIndexOf("=");//取得数据的分隔字符串String boundary = contentType.substring(lastIndex + 1, contentType.length());//创建保存路径的文件名String fileName = rootPath + saveFile;int pos;pos = file.indexOf("filename = \"");pos = file.indexOf("\n", pos) + 1;pos = file.indexOf("\n", pos) + 1;pos = file.indexOf("\n", pos) + 1;int boundaryLocation = file.indexOf(boundary, pos) - 4;//取得文件数据的开始的位置int startPos = ((file.substring(0, pos)).getBytes()).length;int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;File checkFile = new File(fileName);if (checkFile.exists()) {out.println("<p>" + saveFile + "文件已经存在.</p>");return;}//检查上传文件的目录是否存在File fileDir = new File(rootPath);if (!fileDir.exists()) {fileDir.mkdirs();}//创建文件的输出类fileOut = new FileOutputStream(fileName);//保存文件的数据fileOut.write(dataBytes, startPos, (endPos - startPos));fileOut.close();out.print("<b>文件上传成功</b>");} else {String content = request.getContentType();out.print("上传的文件类型是" + content + "类型的,请上传目录mutipart/form-data类型的文件");}} catch (Exception ex) {throw new ServerException(ex.getMessage());}
%>
</body>
</html>

  

转载于:https://www.cnblogs.com/mmykdbc/p/8917317.html

使用jsp实现文件上传的功能相关推荐

  1. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

  2. 项目_功能模块_基于Spring Boot的文件上传下载功能的设计与实现

    文章目录 基于Spring Boot的文件上传下载功能模块的设计与实现 1.前言 2.技术栈 3.关键源码 4.实现效果 4.1.登录 4.2.文件列表 4.3.上传文件测试 4.3.1.测试图片 4 ...

  3. 教你如何实现c#文件上传下载功能

    简单介绍一下c#文件上传下载功能实现. NuGet 安装SqlSugar Model文件下新建 DbContext 类 public class DbContext {public DbContext ...

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

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

  5. java文件流 m.jb51.net_FasfDFS整合Java实现文件上传下载功能实例详解

    今天使用Java代码实现文件的上传和下载.对此作者提供了Java API支持,下载fastdfs-client-java将源码添加到项目中.或者在Maven项目pom.xml文件中添加依赖 org.c ...

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

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

  7. java实现文件上传下载功能

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

  8. JavaWeb实现文件上传下载功能实例详解

    感谢原文作者分享,原文链接:http://www.jb51.net/article/96745.htm 这篇文章主要介绍了JavaWeb中的文件上传和下载功能的实现,在开发中,文件上传和下载功能是非常 ...

  9. 基于Servlet4的文件上传下载功能,原生态。

    效果展现 maven依赖 为了让同学们直接引入依赖,我这里贴出了dependencies <dependencies><!-- https://mvnrepository.com/a ...

最新文章

  1. oracle failovermode,[WK-T]ORACLE 10G 配置故障转移(Failover)
  2. 集合之TreeMap源码分析,简单介绍什么是红黑树,SortedMap和NavigableMap之间的关系和区别
  3. mysql online ddl和pt_online ddl与pt-osc详解
  4. 【学习笔记】redis一些配置文件参数详解
  5. 小白的CMMI3体验
  6. 推荐一个Asp.Net Core工具库
  7. art-template入门(六)之解析规则
  8. codeforces 486A-C语言解题报告
  9. iOS UITableView的使用 (选自oschina)
  10. hdu 2089 数位dp入门
  11. 【Python】pymysql.err.InternalError: (1236, 'Misconfigured master - server_id was not set')
  12. Echarts实现柱状图下钻功能
  13. java logger 乱码_Log4j乱码
  14. WordPress 前端投稿/编辑发表文章插件 DJD Site Post(支持游客和已注册用户)汉化版 免费下载...
  15. 王者服务器维修2019年四月份,王者荣耀2019年4月新皮肤有哪些?4月新皮肤什么时候出...
  16. css样式 向下补白,DIVCSSpadding内补白(内边距)leftrighttopbottom_html/css_WEB-ITnose
  17. .net中的认证(authentication)与授权(authorization)
  18. Matlab绘制各种小波函数及尺度函数图
  19. 基于嵌入式Linux进行Python应用开发
  20. 别说对不起,你没那么爱我了

热门文章

  1. 回望2017:一个前端从业者砥砺前行的一年
  2. 勒索软件损失2年增15倍 2017年可达50亿美元
  3. Android 时间维护服务 TimeService(针对于特殊定制设备)
  4. 自定义DataAnnotations
  5. Redux 入坑笔记
  6. VSTO学习笔记(四)从SharePoint 2010中下载文件
  7. 利用 jQuery 克隆 Object
  8. Chapter 15 配置服务器存储和群集 第1课
  9. 计算机虚拟现实技术论文好写吗,计算机虚拟现实技术论文.docx
  10. Java 并发(生产者/消费者 模式)