JSP Servlet学习笔记——使用fileupload上传文件
关键代码如下:
index.jsp
- <body>
- <center>
- <h3>文件上传</h3>
- <font color="red"><%=request.getAttribute("msg")==null?"":request.getAttribute("msg") %> </font>
- <form enctype="multipart/form-data" method="post" action="servlet/FileUploadServlet">
- 文件描述:<input type="text" name="text" /><br/>
- 选择文件:<input type="file" name="file1" /><br/>
- 选择文件:<input type="file" name="file2" /><br/>
- 选择文件:<input type="file" name="file3" /><br/>
- 选择文件:<input type="file" name="file4" /><br/>
- 选择文件:<input type="file" name="file5" /><br/>
- <input type="submit" value="上传" />
- </form>
- </center>
- </body>
FileUploadServlet.jsp
- package com.accp.fileupload.servlet;
- import java.io.File;
- import java.io.IOException;
- import java.util.List;
- import javax.servlet.ServletException;
- 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.FileUploadException;
- import org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException;
- import org.apache.commons.fileupload.disk.DiskFileItemFactory;
- import org.apache.commons.fileupload.servlet.ServletFileUpload;
- public class FileUploadServlet extends HttpServlet {
- private static final long serialVersionUID = 2827297299439162553L;
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- //使用同一种处理方法
- doPost(request, response);
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws ServletException, IOException {
- request.setCharacterEncoding("UTF-8");
- response.setContentType("text/html; charset=UTF-8");
- //保存路径
- String savePath = getServletContext().getRealPath("/upload");
- File saveDir = new File(savePath);
- // 如果目录不存在,就创建目录
- if(!saveDir.exists()){
- saveDir.mkdir();
- }
- // 创建文件上传核心类
- DiskFileItemFactory factory = new DiskFileItemFactory();
- ServletFileUpload sfu = new ServletFileUpload(factory);
- //设置编码
- sfu.setHeaderEncoding("UTF-8");
- // 设置上传的单个文件的最大字节数为2M
- sfu.setFileSizeMax(1024*1024*2);
- //设置整个表单的最大字节数为10M
- sfu.setSizeMax(1024*1024*10);
- try{
- // 处理表单请求
- List<FileItem> itemList = sfu.parseRequest(request);
- for (FileItem fileItem : itemList) {
- // 对应表单中的控件的name
- String fieldName = fileItem.getFieldName();
- System.out.println("控件名称:" + fieldName);
- // 如果是普通表单控件
- if(fileItem.isFormField()){
- String value = fileItem.getString();
- //重新编码,解决乱码
- value = new String(value.getBytes("ISO-8859-1"),"UTF-8");
- System.out.println("普通内容:" + fieldName + "=" + value);
- // 上传文件
- }else{
- // 获得文件大小
- Long size = fileItem.getSize();
- // 获得文件名
- String fileName = fileItem.getName();
- System.out.println("文件名:"+fileName+"\t大小:" + size + "byte");
- //设置不允许上传的文件格式
- if(fileName.endsWith(".exe")){
- request.setAttribute("msg", "不允许上传的类型!");
- }else{
- //将文件保存到指定的路径
- File file = new File(savePath,fileName);
- fileItem.write(file);
- request.setAttribute("msg", "上传成功!");
- }
- }
- }
- }catch(FileSizeLimitExceededException e){
- request.setAttribute("msg", "文件太大");
- }catch(FileUploadException e){
- e.printStackTrace();
- }catch(Exception e){
- e.printStackTrace();
- }
- //上传完毕后 转发到首页
- request.getRequestDispatcher("/index.jsp").forward(request, response);
- }
- }
JSP Servlet学习笔记——使用fileupload上传文件的更多相关文章
- Python+Selenium学习笔记10 - send_keys上传文件
在火狐浏览器上传文件 上传前,同一个HTML文件在火狐和Edge浏览器显示有些不同 这是Firefox浏览器的显示 这是Edge浏览器 上传后 1 # coding = utf-8 2 3 from ...
- FileUpload 上传文件,并实现c#使用Renci.SshNet.dll实现SFTP文件传输
fileupload上传文件和jquery的uplodify控件使用方法类似,对服务器控件不是很熟悉,记录一下. 主要是记录新接触的sftp文件上传.服务器环境下使用freesshd搭建好环境后,wi ...
- jsp&servlet学习笔记
1.路径引用问题 一个css.jsp.html.或者javascript文件从从一个工程复制到另一工程,如果引用的时候使用的时相对路径,看似没有错误,但是却一直引用不进来,这时候要使用绝对路径,这样才 ...
- JSP/Serlet 使用fileupload上传文件
需要引用的jar commons-fileupload-1.3.1.jar commons-io-2.2.jar index.jsp <body> <center> <h ...
- linux学习笔记-linux主机上传下载文件至linux虚拟机的方法
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 1.上传文件 scp -r file 用户名@ip地址:目标目录 2.下载文件 scp -r 用户名@ip地址:文件 目标目录
- Web安全测试学习笔记-DVWA-图片上传
很多网站都有上传资源(图片或者文件)的功能,资源上传后一般会存储在服务器的一个文件夹里面,如果攻击者绕过了上传时候的文件类型验证,传了木马或者其他可执行的代码上去,那服务器就危险了. 我用DVWA的文 ...
- 解决COS、FileUpload上传文件时中文文件名乱码问题
方法: MultipartParser mp = new MultipartParser(request, 10*1024*1024); mp.setEncoding("GBK") ...
- SpringMVC使用FileUpload上传文件
进口FileUpload和common-io的Jar包 注意:1.Struts2其它方法需要使用的:struts2过滤,将改变reqeust类型,由HttpServletRequest成为MultiP ...
- 工作笔记4.struts2上传文件到server
本文介绍两种:上传文件到server的方式 一种是提交Form表单:还有一种是ajaxfileupload异步上传. 一.JSP中: 1.提交Form表单 为了能完毕文件上传,我们应该将这 ...
随机推荐
- html5 canvas 多个填充渐变形状
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 40个新鲜的 jQuery 插件,使您的网站用户友好
作为最流行的 JavaScript 开发框架,jQuery 在现在的 Web 开发项目中扮演着重要角色,它简化了 HTML 文档遍历,事件处理,动画以及 Ajax 交互,这篇文章特别收集了40个新鲜的 ...
- [整理]C 内核源代码-学习资料
GNU C gnu项目:http://www.gnu.org/software/software.html ftp:http://ftp.gnu.org/gnu/ 托管:http://savannah ...
- JavaScript编写风格指南 (一)
//参考<编写可维护的Javascript> 一:缩进// 第一行的层级由4个空格组成,避免使用制表符tab进行缩进 //好的写法if (true) { doSomething() ...
- 【51Nod】1920 空间统计学 状压DP
[题目]1920 空间统计学 [题意]给定m维空间中的n个点坐标,满足每一维坐标大小都在[0,3]之间,现在对于[0,3*m]的每个数字x统计曼哈顿距离为x的有序点对数.\(n \leq 2*10^5 ...
- 【转】用CornerStone配置SVN,HTTP及svn简单使用说明
已经安装了的小伙伴请直接看三步骤 一.下载地址 CornerStoneV2.6:http://pan.baidu.com/s/1qWEsEbM密码:www.macx.cn 二.安装破解方法 1.安装之 ...
- 解决Winsock2.h和afxsock.h定义冲突的办法
如果我们在工程中使用了afxsock.h,但在其它的地方又加了些 使用winsock2.h,哈哈,VC会告诉你一大堆错误,大意就是有定义重复,该怎么解决? 由于MFC的SOCKET类使用的是Winso ...
- 直接读取修改exe文件
1. 前言 配置器的编写有很多的方式,主要是直接修改原始的受控端的程序,有的方式是把受控端和配置信息都放到控制端程序的内部,在需要配置受控端的时候直接输入配置信息,生成受控端:也有的方式是在外部直接修 ...
- WebBrowserのIEバージョンを最新にする。
WindowsフォームでWebBrowserコントロールを配置すると.IEのバージョンが 7 と古い.レジストリをいじると.IE11の Edgeモードに変更できる(参考記事).デザイン画面でWebBr ...
- 『记录』Android参考资料
欢迎留言推荐好的教程.资料.博客及作者等. 『记录』Android参考资料 1.前期环境 Android Studio使用Git Android Studio快捷键总结 Android Studio及 ...