文件上传:

项目中经常用到文件上传。

自己实现文件上传,使用文件上传组件fileupload组件

1、指定表单类型为文件上传,

enctype=”multipart/form-data”

2、提交方式必须是:post

3、表单中存在文件域元素。

需要的jar包

index.jsp

<body>
<form action="${pageContext.request.contextPath}/FileUploadTest" method = "post" enctype="multipart/form-data">
用户名::<input type = "text" name = "username"/><br>
文件:<input type = "file" name = "file1"/><br>
<input type = "submit">
</form>
</body>
FileUploadTest.servlet
package zck.servlet;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload; /**
* Servlet implementation class FileUploadTest
*/
@WebServlet("/FileUploadTest")
public class FileUploadTest extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public FileUploadTest() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建文件上传工厂类
DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
//创建文件上传核心类
ServletFileUpload upload = new ServletFileUpload(fileItemFactory);
upload.setFileSizeMax(30*1024*1024);//设置单个文件最大值30M
upload.setSizeMax(50*1024*1024);//最多50个文件 //判断表单是否是文件上传表单
if(upload.isMultipartContent(request)) {
//把请求数据转化为FileItem对象集合
try {
List<FileItem> list = upload.parseRequest(request);
//遍历得到每一个数据项
for(FileItem fileItem :list) {
//判断普通项,还是文件。
if(fileItem.isFormField()) {
//普通表单项
String fieldName =fileItem.getFieldName();//表单元素名称
String content =fileItem.getString();//值
System.out.print(fieldName+"\n"+content+"\n\n");
}else {
//文件上传表单项
String name =fileItem.getName();//获取文件名
//上传文件目录路径
String basePath = ("D:\\software\\eclipse\\workplace2019-1\\UploadFiles\\WebContent\\upload\\");
//新建文件
File file = new File(basePath,name);
fileItem.write(file);
fileItem.delete();//删除临时文件
}
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
System.out.print("不是文件上传表单,不处理");
}
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
} }

运行界面

代码中主要对象及属性

实现文件上传功能(FileUpload组件)的更多相关文章

  1. .JavaWeb文件上传和FileUpload组件使用

    .JavaWeb文件上传 1.自定义上传 文件上传时的表单设计要符合文件提交的方式: 1.提交方式:post 2.表单中有文件上传的表单项:<input type="file" ...

  2. 文件上传使用FileUpload组件进行代码实现

    使用FileUpload组件进行代码实现 实现步骤 1. 获取解析器工厂: DiskFileItemFactory 2. 获取解析器对象: ServletFileUpload 3. 解析request ...

  3. 使用element的upload组件实现一个完整的文件上传功能(上)

    说到标题就有点心塞了,前段时间项目上需要实现一个文件上传的功能,然后就咔咔的去用了element的upload组件,不用不知道一用吓一跳哇. 在使用的过程中遇到了很多让意想不到的问题,后来也因为时间问 ...

  4. 使用element的upload组件实现一个完整的文件上传功能(下)

    本篇文章是<使用element的upload组件实现一个完整的文件上传功能(上)>的续篇. 话不多说,接着上一篇直接开始 一.功能完善—保存表格中每一列的文件列表状态 1.思路 保存表格中 ...

  5. Vue实现多文件上传功能(前端 + 后端代码)

    本人业余前端开发,因为公司(很坑)觉得我很牛逼,所以让我前后端一起玩,无奈的我只能磕磕碰碰的研究起了vue. 开发项目的时候,用到文件上传的功能很常见,包括单文件上传和多文件上传,上传各种类型的文件. ...

  6. 学习ASP.NET Core Razor 编程系列十四——文件上传功能(二)

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  7. iOS 的 Safari 文件上传功能详解

    iOS 6 给 Safari 浏览器带来的另外一个功能是文件上传,终于 Safari 终于支持 input 输入框的文件类型了,并且还支持 HTML媒体捕获(HTML Media Capture). ...

  8. [php基础]PHP.INI配置:文件上传功能配置教程

    昨天分享了在PHP网站开发中如何在php.ini中配置实现session功能的PHP教程,今天继续分享在利用PHP实现文件上传功能时几点关键php.ini的配置. 说到在php.ini中的文件上传的配 ...

  9. 达到HTTP合约Get、Post和文件上传功能——采用WinHttp介面

    于<采用WinHttp实现HTTP协议Get.Post和文件上传功能>一文中,我已经比較具体地解说了怎样使用WinHttp接口实现各种协议. 在近期的代码梳理中,我认为Post和文件上传模 ...

  10. 学习ASP.NET Core Razor 编程系列十五——文件上传功能(三)

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

随机推荐

  1. PIC - For Resources [ background ]

  2. mysql索引分类及实现原理

    索引分类:主键索引.唯一索引.普通索引.全文索引.组合索引 1.主键索引:即主索引,根据主键pk_clolum(length)建立索引,不允许重复,不允许空值 ALTER TABLE 'table_n ...

  3. Vue3.0+TypeScript

    序言 资料 https://www.cnblogs.com/chanwahfung/p/11968205.html

  4. 简单的尝试下angr

    0x00:前言 之前接触到了符号执行,可以用于程序的自动化分析,感觉还是比较神奇,工业上的具体用法不是很清楚,不过在CTF中这个东西慢慢在流行...从defcon 2016就可以看出(有很多人解re用 ...

  5. idea 2017 破解方法

    一.先进入Intellij IDEA的官网:https://www.jetbrains.com,下载安装 二.破解. 网上的破解方法较多,总结下来大概有下面几种办法供大家作为参考 声明:破解用于学习和 ...

  6. maven报错1

    错误1 错误2 缺少mapper文件 错误3 缺少映射文件 <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉. --> <build> <re ...

  7. 整合到 Mockito 2

    为了能够持续改进 Mockito 和在未来提升测试体验,我们希望你能够升级到 Mockito 2.10!Mockito 按照语义化版本(semantic versioning)的方式对版本进行编排,并 ...

  8. 51 Nod 1100 斜率最大

    1100 斜率最大  基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 平面上有N个点,任意2个点确定一条直线,求出所有这些直线中,斜率最大的那条直线 ...

  9. noi.ac #528 神树和排列

    题目链接:戳我 #include<iostream> #include<cstring> #include<cstdio> #include<algorith ...

  10. 【BZOJ4671】 异或图

    Description 定义两个结点数相同的图 G1 与图 G2 的异或为一个新的图 G, 其中如果 (u, v) 在 G1 与 G2 中的出现次数之和为 1, 那么边 (u, v) 在 G 中, 否 ...