JSP入门 文件上传
commons-fileupload
public void save(HttpServletRequest request,HttpServletResponse response) throws Exception {
String temp = getServletContext().getRealPath("/temp"); // 上传时存放临时文件的目录
String uploadDir = getServletContext().getRealPath("/upload"); // 上传文件存放的目录
DiskFileUpload diskFileUpload = new DiskFileUpload();
diskFileUpload.setSizeMax(1*1024*1024); // 设置允许用户上传文件大小,单位:字节
diskFileUpload.setSizeThreshold(4096); // 设置最多只允许在内存中存储的数据,单位:字节
diskFileUpload.setRepositoryPath(temp); // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
//开始读取上传信息
List fileItems = diskFileUpload.parseRequest(request);
Iterator iter = fileItems.iterator(); // 依次处理每个上传的文件
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next(); // 忽略其他不是文件域的所有表单信息
if(!item.isFormField()) {
String name = item.getName(); // 获取上传文件名,包括路径
name = name.substring(name.lastIndexOf("\\") + 1); // 从全路径中提取文件名
long size = item.getSize();
if (name != null && !name.equals("") && size != 0) {
String filePath = System.currentTimeMillis() + "_" + name;
item.write(new File(uploadDir, filePath));
Upload upload = new Upload();
upload.setFileName(name);
upload.setFilePath("upload/" + filePath);
upload.setFileSize(size);
upload.setAddDate(new Date());
list.add(upload);
}
}
}
处理文件上传的第一步是创建一个DiskFileUpload,为它设置临时目录,文件大小限制,内存缓存的大小。
得到DiskFileUpload实例后,调用parseRequest(request)解析请求,解析的结果是一个列表,因为我们可能上传多个文件。
现在可以循环得到的列表处理每一个FileItem,如果isFormField()返回false,表示当前FileItem对应一个上传的文件,下面就能从FileItem中获得文件名和文件大小,最后调用write()方法写入upload目录下。
文件上传时 浏览器端注意事项:
1.使用method="POST"。
表单默认使用method="GET"提交请求,GET方式的请求是没有请求体(body)的,所有参数都将附加到url后传递给服务器。
文件上传需要将二进制数据放到请求体(body)中,所以我们必须指定表单使用method="POST"。
2.为表单设置enctype="multipart/form-data"。
不设置enctype的情况表单只会把文件名传递到服务器,enctype的效果是把本地文件以二进制的形式附加到请求的body中,供服务器接收解析。
JSP入门 文件上传的更多相关文章
- JSP多文件上传到服务器
问题描述: 作为一个Java开发Web方向的程序员,很重要的一个功能,就是上传文件功能是一定要掌握的,今天整理了一下代码. 1.JSP显示界面代码和动态添加上传文件个数. <%@ page la ...
- Android+jsp +html 文件上传案例 已测试 成功通过
我文件上传一直是广大读者一个问题 今天就把成功案例写下 javaweb 网页前段 <%@ page language="java" import="java.uti ...
- 基于jsp的文件上传和下载
参考: 一.JavaWeb学习总结(五十)--文件上传和下载 此文极好,不过有几点要注意: 1.直接按照作者的代码极有可能listfile.jsp文件中 <%@taglib prefix=&qu ...
- jsp简易文件上传(common.fileupload)
昨天开始重新架构我的V&View(维视),之前写文章使用的是一个kindediter的插件,挺好用的.最近不知道咋了,出现了些小问题.早在写V&View的时候就想用以下两种方法实现文章 ...
- jsp Servlet 文件上传
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- jsp实现文件上传下载
文件上传: upload.jsp <form action="uploadServlet" method="post" enctype="mul ...
- 使用jsp实现文件上传的功能
首先是表单的jsp文件:upload.jsp <%@ page contentType="text/html;charset=UTF-8" language="ja ...
- jsp实现文件上传(二)用cos组件实现文件上传
jsp表单 <%@ page language="java" pageEncoding="utf-8"%> <html> <hea ...
- JSP的文件上传
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/file-uploading.html: 一个JSP可以用一个HTML表单标签,它允许用户上传文件到服务器 ...
随机推荐
- Servlet的执行流程、生命周期
下面这幅图的Request和Response的箭头方向反了,应该是客户端发出请求,然后web服务器返回响应. servlet生命周期阶段包括初始化.加载.实例化.服务和销毁. 编写Servlet的d ...
- css 找到隐藏元素个数
<form> <input type="hidden" name="email" /> <input type=" ...
- 再起航,我的学习笔记之JavaScript设计模式18(观察者模式)
观察者模式 观察者模式(Observer): 又被称为发布-订阅者模式或消息机制,定义了一种依赖关系,解决了主体对象与观察者之间功能的耦合. 创建一个观察者对象 首先我们创建一个闭包对象,让其在页面加 ...
- MySQL问题总结(持续更新)
CHAR和VARCHAR的区别 存储方式和检索方式不同: 1.CHAR固定长度字符类型.CHAR存储定长数据,CHAR字段上的索引效率高,比如定义char(10),那么不论你存储的数据是否达到了10个 ...
- sed修炼系列(四):sed中的疑难杂症
本文目录:1 sed中使用变量和变量替换的问题2 反向引用失效问题3 "-i"选项的文件保存问题4 贪婪匹配问题5 sed命令"a"和"N" ...
- ASP.NET Core的身份认证框架IdentityServer4(7)- 使用客户端证书控制API访问
前言 今天(2017-9-8,写于9.8,今天才发布)一口气连续把最后几篇IdentityServer4相关理论全部翻译完了,终于可以进入写代码的过程了,比较累.目前官方的文档和Demo以及一些相关组 ...
- jquery_mobile事件
1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 < ...
- Http和Socket详解
详见: http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp59 这不是同一层的协议 socket是一个针对TCP和UDP编程的借 ...
- 云计算的三种服务模式IaaS、PaaS和SaaS的差别
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt363 云服务"现在已经快成了一个家喻户晓的词了.如果你不知道Paa ...
- poj 1149经典网络流构图
题意:m个猪圈,n个客户,每个客户给出选则猪圈的钥匙和需要购买猪的个数,其中每次客户购买时客户选则的猪圈数量可以相互更换,问最大购买数量. 思路:以客户作为除源点汇点之外的点,然后对于每个猪圈从源点连 ...