ServletFileUpload(Servlet文件上传)
//**文件上传** form表单提交必须指定Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型"multipart/form-data"
//1.创建磁盘文件项目工厂
DiskFileItemFactory df=new DiskFileItemFactory();
//2.设置上传的内存缓存区大小 4096=4KB
df.setSizeThreshold(4096);
//3.实列化Servlet文件上传对象 把'磁盘文件项目工厂'放入构造中(把缓存区大小放进去)
ServletFileUpload upload=new ServletFileUpload(df);
try {
//4.得到所有的上传表单对象集合 返回List<FileItem> 相当于每一个表单元素都是一个FileItem
List<FileItem> itemList=upload.parseRequest(request);
//6.获取文件夹的绝对路径
String path=request.getSession().getServletContext().getRealPath("\\upload"); //5.遍历表单对象集合
String ntid="";
String ntitle="";
String nauthor="";
String nsummary="";
String ncontent="";
String file="";
String name="";
for(FileItem item:itemList){
// System.out.println("InMemory:"+item.isInMemory());判断FileItem对象是否是一个简单的表单字段 //取出用户提交内容
if(item.isFormField()){//判断 item是否是简单的表单字段
if(item.getFieldName().equals("ntid")){
ntid=item.getString("utf-8");
}else if(item.getFieldName().equals("ntitle")){
ntitle=item.getString("utf-8");
}else if(item.getFieldName().equals("nauthor")){
nauthor=item.getString("utf-8");
}else if(item.getFieldName().equals("nsummary")){
nsummary=item.getString("utf-8");
}else if(item.getFieldName().equals("ncontent")){
file=item.getString("utf-8");
}
}else{
if(item.getFieldName().equals("file")){
//得到用户上传文件的路径
String fileName=item.getName();
//截取最后文件的名字
int index=fileName.lastIndexOf("\\");
name=fileName.substring(index+1); try {
//把文件写入服务器文件夹
item.write(new File(path,name));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
} catch (FileUploadException e) {
/* form表单中中没有设置
encType="multipart/form-data" method="post"
会造成此异常(FileUploadBase$InvalidContentTypeException)
*/
e.printStackTrace();
}
需要:
commons-fileupload.jar commons-io.jar 两个插件
ServletFileUpload(Servlet文件上传)的更多相关文章
- Servlet文件上传下载
今天我们来学习Servlet文件上传下载 Servlet文件上传主要是使用了ServletInputStream读取流的方法,其读取方法与普通的文件流相同. 一.文件上传相关原理 第一步,构建一个up ...
- Servlet文件上传(ServletFIleUpload,DiskFileItemFactory,FileItem)
1:我们学的是表单文件上传,就是在一个FORM中提交相应的信息,和之前我们的提交的注册信息之类的表单是不同的,所以要先改变一下FORM的属性,enctype="multipart/form- ...
- java web学习总结(二十四) -------------------Servlet文件上传和下载的实现
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...
- servlet文件上传
1.获取文件上传路径 String path=request.getServletContext.getRePath("/WEB-INF/resources"); 2.获得工厂 3 ...
- servlet文件上传2——复合表单提交(数据获取和文件上传)
上传文件时表单enctype属性必须要更改为<enctype='multipart/form-data'>:采用post提交表单,元素需要有name属性: 利用第三方jar包(common ...
- Servlet 文件上传
Servlet 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器.上传的文件可以是文本文件或图像文件或任何文档. 本文使用到的文件有: 创建一个文件上传表单 下面的 HTML 代码 ...
- jsp Servlet 文件上传
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Servlet文件上传和下载的复习
上传 使用Servlet完成上传和下载相较于使用Struts框架有点麻烦,毕竟更偏底层了 项目中主要使用的jar包: commons-io-2.2.jar commons-fileupload-1. ...
- servlet文件上传及下载
servlet3.0中提供了对文件上传的直接支持,不需要借助任何第三方上传组件,直接使用Servlet3.0提供的API就能够实现文件上传功能. servlet 代码: package ni.jun. ...
随机推荐
- Linux下tomcat部署
进入Tomcat下的bin目录 cd /usr/local/tomcat/bin 如果你想直接干掉Tomcat,你可以使用kill命令,直接杀死Tomcat进程 kill -9 7010 然后继续查看 ...
- C++ 记事本: 从历史说起
C 的简史 在谈论 C++ 的历史那么必须先得了解 C 的历史,那么我们先来看一段来自于 <<C专家编程>> 对 C 语言史前阶段的简单阐述: Ken Thompson(左), ...
- [C#] AY.WPF-图形编程-高中生为起点-研究报告1
=========================www.ayjs.net独家拥有,未经许可,不许转载,违者追究法律责任 简单的引入:点的平移与转换 System.Window.Point类的 Off ...
- System.Diagnostics.Debug和System.Diagnostics.Trace 【转】
在 .net 类库中有一个 system.diagnostics 命名空间,该命名空间提供了一些与系统进程.事件日志.和性能计数器进行交互的类库.当中包括了两个对开发人员而言十分有用的类——debug ...
- Android开发(二十九)——layout_weight的含义
首先声明只有在Linearlayout中,该属性才有效.之所以android:layout_weight会引起争议,是因为在设置该属性的同时,设置android:layout_width为wrap_c ...
- Ubunbu新建的用户使用SecureCrt无法Table补全、无法高亮
Check 两个地方: 1. 确保/etc/passwd中配置有/bin/bash (这个是用来控制补全). 2. 在~/.bashrc中配置, export TERM=linux (这个是用来控制 ...
- ./adb: cannot execute binary file:
问题描述: 在32位ubuntu(12.04)上下载了最新的android SDK,使用SDK manager 下载ADB之后发现,无法运行ADB命令,排除权限问题,在网上搜到答案: http://a ...
- [转]Linux下的lds链接脚本详解
转载自:http://linux.chinaunix.net/techdoc/beginner/2009/08/12/1129972.shtml 一. 概论 每一个链接过程都由链接脚本(lin ...
- Gamma校正与线性工作流
1 Gamma校正是什么?8位亮度值x(0-1)经过x^0.45的一个提亮过程. 2 为什么需要Gamma校正 人的眼睛是以非线性方式感知亮度,在自然界中,人感觉到的一半亮度其实只有全部能量的0.2, ...
- 【原】android本地推送
android本地推送的实现原理:开启一个BroadcastReceiver和一个AlarmManager,闹钟设置推送唤醒时间,BroadcastReceiver一直在检测是否应该推送. 目前遗留问 ...