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表单标签,它允许用户上传文件到服务器 ...
随机推荐
- 写给后端的前端笔记:浮动(float)布局
写给后端的前端笔记:浮动(float)布局 这篇文章主要面向后端人员,对前端有深刻了解的各位不喜勿喷. 起因 前一阵子我一个后端的伙伴问我,"前端的左飘怎么做?",我立马就懵了,& ...
- Spring详解(四)------注解配置IOC、DI
Annotation(注解)是JDK1.5及以后版本引入的.它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查.注解是以‘@注解名’在代码中存在的. 前面讲解 IOC 和 DI 都是通过 ...
- 散列表(拉链法与线性探测法)Java实现
package practice; import java.security.Principal; import java.util.Scanner; import edu.princeton.cs. ...
- 用JS制作一个信息管理平台
首先,介绍一些需要用到的基本知识. [JSON] JSON是数据交互中,最常用的一种数据格式. 由于各种语言的语法都不相同,在传递数据时,可以将自己语言中的数组.对象等转换为JSON字符串. 传递之后 ...
- svn: Can't convert string from 'UTF-8' to native
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt227 svn 版本库中有文件是以中文字符命名的,在 Linux 下 chec ...
- Java代理详解
一.概述 代理模式是Java常用的设计模式之一,实现代理模式要求代理类和委托类(被代理的类)具有相同的方法(提供相同的服务),代理类对象自身并不实现真正的核心逻辑,而是通过调用委托类对象的相关方法来处 ...
- !Web云笔记--HTML基础
Web自学笔记第一阶段笔记综合汇总 参考资料:<Head First HTML&CSS>(中文第二版)(美国)弗里昂ISBN:9787508356464 中国电力出版社 全部阶段: ...
- 网络传输编程之TCP
网络传输编程之TCP 网络传输编程指基于各种网络协议进行编程,包括TCP编程,UDP编程,P2P编程.本节介绍TCP编程. (1)TCP简介: TCP是TCP/IP体系中最重要的传输层协议 ...
- 个人作业1——四则运算题目生成程序(java代码,基于控制台)
一.题目描述: 从<构建之法>第一章的 "程序" 例子出发,像阿超那样,花二十分钟写一个能自动生成小学四则运算题目的命令行 "软件",满足以下需求: ...
- 团队作业——Alpha冲刺之事后诸葛亮
小组成员: 武健男:201421123091 林俊鹏:201421123076 何跃斌:201421123082 陈鑫龙:201421123078 潘益靖:201421123086 黄睿:201421 ...