//**文件上传**    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文件上传)的更多相关文章

  1. Servlet文件上传下载

    今天我们来学习Servlet文件上传下载 Servlet文件上传主要是使用了ServletInputStream读取流的方法,其读取方法与普通的文件流相同. 一.文件上传相关原理 第一步,构建一个up ...

  2. Servlet文件上传(ServletFIleUpload,DiskFileItemFactory,FileItem)

    1:我们学的是表单文件上传,就是在一个FORM中提交相应的信息,和之前我们的提交的注册信息之类的表单是不同的,所以要先改变一下FORM的属性,enctype="multipart/form- ...

  3. java web学习总结(二十四) -------------------Servlet文件上传和下载的实现

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

  4. servlet文件上传

    1.获取文件上传路径 String path=request.getServletContext.getRePath("/WEB-INF/resources"); 2.获得工厂 3 ...

  5. servlet文件上传2——复合表单提交(数据获取和文件上传)

    上传文件时表单enctype属性必须要更改为<enctype='multipart/form-data'>:采用post提交表单,元素需要有name属性: 利用第三方jar包(common ...

  6. Servlet 文件上传

    Servlet 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器.上传的文件可以是文本文件或图像文件或任何文档. 本文使用到的文件有: 创建一个文件上传表单 下面的 HTML 代码 ...

  7. jsp Servlet 文件上传

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  8. Servlet文件上传和下载的复习

    上传 使用Servlet完成上传和下载相较于使用Struts框架有点麻烦,毕竟更偏底层了 项目中主要使用的jar包: commons-io-2.2.jar  commons-fileupload-1. ...

  9. servlet文件上传及下载

    servlet3.0中提供了对文件上传的直接支持,不需要借助任何第三方上传组件,直接使用Servlet3.0提供的API就能够实现文件上传功能. servlet 代码: package ni.jun. ...

随机推荐

  1. 2014 Hangjs 见闻流水账第一天

    前言 6月21日~6月22日, 第一次跑远门去参加一个大会(广州 -> 杭州),本来打算,在火车的回来的路上,把这两天的东西记录一下,不过,火车上的环境实在恶劣,同时也高估了自己的专注力,所以, ...

  2. 利用Mysql提供的字符串方法查找字符串中某字符出现的次数

    有这么一个需求,查出分类中没有子分类的一级分类,脑海中首次出现的解决思路和这样的 先使用PHP查出所有的一级分类 递归查询一级分类是否有子分类 将没有子分类的一级分类汇总 但觉的这样处理太麻烦了,然后 ...

  3. MapReduce的一点理解

    对于MapReduce编程,大概率的流程用过的人或多或少都清楚,但是归结到细节上,就有的地方不清楚了,下面根据自己的疑问,加上从网上各处,找到的被人的描述,最自己的疑问做出回答. 1. MapRedu ...

  4. NSXMLParser读取XML文件并将数据显示到TableView上

    关于XML,有两种解析方式,分别是SAX(Simple API for XML,基于事件驱动的解析方式,逐行解析数据,采用协议回调机制)和DOM(Document Object Model ,文档对象 ...

  5. SIP:用Riverbank的SIP创建C++库的Python模块

    我们发现PyQt做的Python版的PyQt是如此好用,如果想把自己的C++库包装成Python模块该如何实现呢? 这里介绍下用SIP包装C++库时值得参考的功能实现: 需要Python模块中实现C+ ...

  6. [转]gulp构建前端工程

    摘要: Gulp 是一个自动化工具,前端开发者可以使用它来处理常见任务: 搭建web服务器 文件保存时自动重载浏览器 使用预处理器如Sass.LESS 优化资源,比如压缩CSS.JavaScript. ...

  7. 【原】 COCOS2D—LUA 获取剪贴板内容

    android下: local luaj = require ("framework.luaj")   local ok,ret  = luaj.callStaticMethod( ...

  8. sudo 使用不了, the permissions on the /etc/sudoers file are changed to something other than 0440

    sudo 使用不了,报错: the permissions on the /etc/sudoers file are changed to something other than 0440 how ...

  9. Cubieboard2裸机开发之(四)定时器操作

    前言 在Cubieboard2裸机开发之(三)里用到了一个延时函数delay,它的延时时间是不精确的,因此为了能够精确延时,就需要定时器的配合.定时器可以精确延时的一个重要原因是它的计时时钟(或者说频 ...

  10. 构建基于WinRT的WP8.1 App 01:页面导航及页面缓存模式

    本篇博文主要阐述基于Windows Runtime的Windows Phone 应用页面间导航相关知识,主要分为以下几个方面: Window.Frame和Page概览 页面间实现跳转 处理物理后退键 ...