java学习笔记 (7) —— 实现简单的上传处理
1、下载apache 的 commons-fileupload.jar 包及 commons-io.jar
2、引入到lib 文件夹下
3、新建uploadApache.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
</head> <body>
<!-- 20 min!!! -->
<form action="/testStruts2/UploadServlet" method="post" enctype="multipart/form-data">
username: <input type="text" name="username"/>
password: <input type="password" name="password" /> file1: <input type="file" name="file1" /><br>
file2: <input type="file" name="file2" /><br> <input type="submit" value="submit">
</form>
</body>
</html>
4、新建resultApache.jsp
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> </head> <body>
username : ${requestScope.username}
password: ${requestScope.password }
file1:${requestScope.file1 }
file2:${requestScope.file2 }
</body>
</html>
5、修改web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>com.test.servlet.UploadServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/UploadServlet</url-pattern>
</servlet-mapping> </web-app>
5、新建UploadServlet.java
package com.test.servlet; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload; public class UploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; @SuppressWarnings("deprecation")
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//定义一个工厂类
DiskFileItemFactory factory = new DiskFileItemFactory();
//获取当前站点目录下upload的路径
String path = request.getRealPath("/upload");
//设置文件暂存路径
factory.setRepository(new File(path));
//设置允许放在内存中的最大空间
factory.setSizeThreshold(1024*1024); ServletFileUpload upload = new ServletFileUpload(factory); try{
//uploadApache.jsp 有多个文本框,传入的是一组文件,因此通过LIST 处理
List<FileItem> list = upload.parseRequest(request);
//循环
for (FileItem item : list) {
//如果是一般的字段,直接放入request中
if(item.isFormField()){
String name = item.getFieldName();
String value = item.getString("gbk");
request.setAttribute(name, value);
//如果是文件类型的字段,则需要进行处理
}else { String name = item.getFieldName();
//file 类型表单
String value = item.getName();
int start = value.lastIndexOf("\\");
//截取最后的文件名
String fileName = value.substring(start+1);
//在request中保存内容,用于前台获取
request.setAttribute(name, fileName);
//一句话也可以概括
//item.write(new File(path,fileName));
//定义输出流,输出路径及文件名称
OutputStream os = new FileOutputStream(new File(path,fileName));
//定义输入流,并获取单个的输入流内容
InputStream is = item.getInputStream();
//定义字节流以获取输入流内容
byte[] buffer = new byte[400];
int length = 0;
while ((length = is.read(buffer)) > 0) {
os.write(buffer,0,length);
}
os.close();
is.close();
}
}
request.getRequestDispatcher("upload/resultApache.jsp"); }catch (Exception e) {
e.printStackTrace();
}
} }
java学习笔记 (7) —— 实现简单的上传处理的更多相关文章
- java web 学习笔记 - jsp用的文件上传组件 SmartUpload
---恢复内容开始--- 1. SmartUpload 此控件在jsp中被广泛的使用,而FileUpload控件主要是用在框架中 2. 如果想要使用,需要在tomcat的lib目录中,将SmartUp ...
- 《Play for Java》学习笔记(六)文件上传file upload
一. Play中标准方法 使用表单form和multipart/form-data的content-type类型. 1.Form @form(action = routes.Application.u ...
- Dynamic CRM 2013学习笔记(十三)附件上传 / 上传附件
上传附件可能是CRM里比较常用的一个需求了,本文将介绍如何在CRM里实现附件的上传.显示及下载.包括以下几个步骤: 附件上传的web页面 附件显示及下载的附件实体 调用上传web页面的JS文件 实体上 ...
- ASP.NET学习笔记 —— 一般处理程序之图片上传
简单图片上传功能目标:实现从本地磁盘读取图片文件,展示到浏览器页面.步骤:(1). 首先创建一个用于上传图片的HTML模板,命名为ImageUpload.html: <!DOCTYPE html ...
- Asp.net core 学习笔记 ( upload/download files 文件上传与下载 )
更新 : 2018-01-22 之前漏掉了一个 image 优化, 就是 progressive jpg refer : http://techslides.com/demos/progressi ...
- Nodejs学习笔记(5) 文件上传系统实例
目录 2018.8.4更新: MySQL可以存放几乎任何类型的数据(图片.文档.压缩包等),但这不是最好的解决方案,正常情况下都是在数据库中存放文件路径,图片.音乐.视频.压缩包.文档等文件存放在硬 ...
- 【JAVAWEB学习笔记】29_文件的上传------commons-fileupload
今天内容: 文件的上传------commons-fileupload 文件上传和下载的实质:文件的拷贝 文件上传:从本地拷贝到服务器磁盘上 客户端需要编写文件上传表单---->服务端需要编 ...
- Linux学习笔记:使用ftp命令上传和下载文件
Linux中如何使用ftp命令,包括如何连接ftp服务器,上传or下载文件以及创建文件夹.虽然现在有很多ftp桌面应用(例如:FlashFXP),但是在服务器.SSH.远程会话中掌握命令行ftp的使用 ...
- Django学习笔记之Ajax与文件上传
Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”.即使用Javascript语言与服务器进行异步交互,传输 ...
随机推荐
- 《python基础教程》笔记之 基础知识
数字相关 在Python程序前加上 from __future__ import division 或者在解释器里面直接执行它,或者通过命令行运行Python时使用命令开关-Qnew,会使单斜线不再整 ...
- Orchard之创建模板
orchard创建模板的两种基本方式: 第一种:通过候补创建(需要用到候补神器): 第二种:通过Shape Tracing创建:
- C++ primer学习方法
C++ primer学习: 第一次可以跳着看.关键是要尽快用起来,在使用中熟练,而不是在细节中迷失. 以C++ Primer第五版为例,第一遍读的时候: Part1也就是前七章,除了6.6,6 ...
- 禁用USB存储设备(不重启)
Title:禁用USB存储设备(不重启) -- 2012-09-13 12:08 在win2003实验,USB存储禁止,无需重启! stop usbrw.reg ------------------- ...
- angular.forEach
if($scope.jsList.length>0){ angular.forEach($scope.jsList,function(item){ if(item._id==jsid){ jsn ...
- 关于 "Context" 模式(基于COM思想IUnknown思想)
有同事很喜欢用Context模式,觉得是自己"首创", 我有些自己的想法, 或者大家可以发表下自己的观点. 什么是Context模式? 23种设计模式中没有这个模式, 是同事自 ...
- Host myCloudData.net on your own server (支持自建服务器)
http://www.myclouddata.net/#/home Host myCloudData.net on your own serverUse the myCloudData.net SDK ...
- Powershell错误处理,try catch finally
脚本的调试向来是一个艰巨的任务,在powershell出现以前简直是一场灾难.在powershell中微软终于做出了诸多改进,不但有了$Error.-whatif,也有了ISE.而在语法上也增加了tr ...
- unix网络编程之简介
通常客户一次只与一个服务器通信, 上图为:一个服务器同时处理多个客户的请求. 上图为:客户与服务器使用TCP协议在同一个以太网中通信. 路由器是广域网的架构设备.今天,最大的广域网是因特网. 上图为: ...
- ZOJ 2760 How Many Shortest Path
题目大意:给定一个带权有向图G=(V, E)和源点s.汇点t,问s-t边不相交最短路最多有几条.(1 <= N <= 100) 题解:从源点汇点各跑一次Dij,然后对于每一条边(u,v)如 ...