实现文件上传

本文介绍了如何使用Java Servlet和Apache的common-fileupload组件实现文件上传功能。内容包括Servlet中获取内置对象、设置文件上传限制、前端表单创建、后端处理上传请求、文件保存策略以及避免安全风险的注意事项。
摘要由CSDN通过智能技术生成

 1.在Servlet中获取request、session、application内置对象的方式

request的一些其他方法
getContextPath(): 获取到当前项目的上下文路径
getMethod():获取到请求的方式
getHeader(String str):获取到请求的头信息的内容
//获取request,在调用doXX方法和service方法
时,会存在两个对应对象,其中一个就是request
doXXX(HttpServletRequest
request,HttpServletResponse response)
service(HttpServletRequest
request,HttpServletResponse repsonse)
//获取Session
HttpSession session =
request.getSession() ;
//获取Application
ServletContext application =
request.getServletContext() ;

Cookie类setMaxAge过期时间

setMaxAge()设置值大于0,将cookie存储于本地磁盘,过期后删除

setMaxAge()设置值小于0,cookie不会保存于本地,浏览器会话结束后,将会删除,经过在Mac上的chrome测试,需要结束进程后cookie才会从内存中删除

setMaxAge()设置值等于0,立即删除cookie,还必须执行response.addCookie()方法才能删除,不执行只是将cookie对象从内存中删除

Java代码实现文件上传
在文件上传过程中,文件是以流的形式从浏览器提交到服务端的。一般情况下采用Apache公司的开源文件上传组件common-fileupioad来进行文件的上传。由于common-fileupioad依赖于common-io,所以还要下载common-io这个包。

准备工作:
下载jar包,建立项目,把包导入lib目录,将lib添加到项目输出目录,配置好Tomcat。

我们只编写简单的前端和全部的后端代码,美化前端的任务交给前端管理员

文件上传四个要求:
为保证服务器安全,上传文件应该放在外界无直接访问的目录下,比如放于WEB-INF目录下。
为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名
要限制上传文件的最大值。
可以限制上传文件的类型,在收到上传文件名时,判断后缀名是否合法。
中点需要了解的两个类:

Filetem类:

//isFormField方法用于判断FileItem类对象封装的数据是一个普通文本表单
//还是一个文件表单,如果是普通表单字段则返回true,否则返回false
boolean isFormField();

//getFieldName方法用于返回表单标签name属性的值。
String getFieldName();
//getString方法用于将FileItem对象中保存的数据流内容以一个字符串返回
String getString();
    
//getName方法用于获得文件上传字段中的文件名。
String getName();

//以流的形式返回上传文件的数据内容。
InputStream getInputStream()

//delete方法用来清空FileItem类对象中存放的主体内容
//如果主体内容被保存在临时文件中,delete方法将删除该临时文件。
void delete();
 

ServletFileUpload 类:

代码实现

method必须是post,post对上传的数据没有限制,get无法获取大型文件

form表单默认提交纯文本,要上传文件就要更改enctype属性为文件流

  1. 编写上传文件的upload.jsp文件:

  2. <%@ page contentType="text/html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值