FileUpload
一upload原理:
1.表单的method必须是post方法
2.enctype属性必须是“mutipatr/form-data”类型
enctype默认的属性是“application/x-www-form-urlencoded”
enctype的作用是:告知服务器请求正文的MIME类型
application/x-www-form-urlencoded:username=aaa&password=123
ServletRequest.getParameter(String name),该方法是专门用来读取enctype是“application/x-www-form-urlencoded”时的方法
3.在Servlet里面通过request.getInputStream()方法就可以获得文件输入流
byte[] b= new byte[1024];
int len=0;
InputStream is = request.getInputStream();
while((len=is.read(b)) != -1){
System.out.println(new String(b,0 ,len));
}
代码示例
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data">
请输入FileName<input type="text" name="FileName"/>
<input type="file"name="file"/>
<input type="submit" value="提交"/>
${pageContext.request.contextPath} </form> </body>
</html>
jspShow
package jcbc.ds.test1; import java.io.IOException;
import java.io.InputStream;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload; /**
* Servlet implementation class UploadServlet
*/
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public UploadServlet() {
super(); } /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建DiskFileItemFactory对象
//DiskFileItemFactory dis = new DiskFileItemFactory();
//创建ServletFileUpload对象
/*ServletFileUpload servletupload = new ServletFileUpload(dis);*/
byte[] b= new byte[1024];
int len=0;
InputStream is = request.getInputStream();
while((len=is.read(b)) != -1){
System.out.println(new String(b,0 ,len));
}
/*try {
List<FileItem> fileItem = servletupload.parseRequest(request);
for(FileItem items : fileItem) {
System.out.println(items.getName());
//进行解析传过来的数据进行封装
}
is.close(); } catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/ } }
ServerServlet
二借助第三方组件实现文件上传:
步骤:
1.拷贝jar包commons-fileupload.jar commons-io.jar
具体参考http://commons.apache.org/proper/commons-fileupload/using.html
2.//创建DiskFileItemFactory对象
DiskFileItemFactory disfileitemfactory = new DiskFileItemFactory();
//创建ServletFileUpload对象
ServletFileUpload servletupload = new ServletFileUpload(disfileitemfactory);
3.获取封装信息
List<FileItem> fileItem = servletupload.parseRequest(request);//这里会抛异常
具体步骤代码如下:
package jcbc.ds.test1; import java.io.File;
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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils; /**
* Servlet implementation class UploadServlet
*/
public class UploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public UploadServlet() {
super(); } /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=gbk");
//创建DiskFileItemFactory对象
DiskFileItemFactory disfileitemfactory = new DiskFileItemFactory();
//创建ServletFileUpload对象
ServletFileUpload servletupload = new ServletFileUpload(disfileitemfactory); try {
//封装
List<FileItem> fileItem = servletupload.parseRequest(request);
for(FileItem files : fileItem ){
if(files.isFormField()){
System.out.println(files.getFieldName());
}
else{
InputStream is = files.getInputStream();
String name = files.getName();
//截取文件名
String fileName = name.substring(name.lastIndexOf("\\")+1);
System.out.println(fileName);//打印结果为huxuebing.txt System.out.println(request.getServletContext().getRealPath("/fileName"));
//创建File类对象
File file = new File(request.getServletContext().getRealPath("/")+fileName);
//判断该文件是否存在如果不存在就创建,存在就不创建
if(file.exists()==false){
System.out.println("==================");
file.createNewFile();
System.out.println("==================");
}
try {
//向创建的文件写入
files.write(file);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } } } catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
commontsUploadFiles
FileName
huxuebing.txt
D:\workSpace\web2\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\day18\fileName
==================
==================
result
FileUpload的更多相关文章
- .JavaWeb文件上传和FileUpload组件使用
.JavaWeb文件上传 1.自定义上传 文件上传时的表单设计要符合文件提交的方式: 1.提交方式:post 2.表单中有文件上传的表单项:<input type="file" ...
- C#-WebForm-文件上传-FileUpload控件
FileUpload - 选择文件,不能执行上传功能,通过点击按钮实现上传 默认选择类型为所有类型 //<上传>按钮 void Button1_Click(object sender, E ...
- FileUpload组件
package com.itheima.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IO ...
- 如何实现修改FileUpload样式
这里先隐藏FileUpload 然后用一个input button和一个text来模拟FileUpload 具体代码为 <asp:FileUpload ID="FileUpload1& ...
- 上传文件fileupload
文件上传: 需要使用控件-fileupload 1.如何判断是否选中文件? FileUpload.FileName - 选中文件的文件名,如果长度不大于0,那么说明没选中任何文件 js - f.va ...
- fileupload图片预览功能
FileUpload上传图片前首先预览一下 看看效果: 在专案中,创建aspx页面,拉上FileUpload控件一个Image,将用来预览上传时的图片. <%@ Page Language=&q ...
- textbox button 模拟fileupload
方案一: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.asp ...
- FileUpload 上传文件,并实现c#使用Renci.SshNet.dll实现SFTP文件传输
fileupload上传文件和jquery的uplodify控件使用方法类似,对服务器控件不是很熟悉,记录一下. 主要是记录新接触的sftp文件上传.服务器环境下使用freesshd搭建好环境后,wi ...
- C# 自定义FileUpload控件
摘要:ASP.NET自带的FileUpload控件会随着浏览器的不同,显示的样式也会发生改变,很不美观,为了提高用户体验度,所以我们会去自定义FileUpload控件 实现思路:用两个Button和T ...
- FileUpload实现文件上传(包含多文件)
package com.hzml.serve; import java.io.File; import java.io.IOException; import java.io.PrintWriter; ...
随机推荐
- uva 846 - Steps
找出步數與距離的關係即可得解. 0步最多能抵達的距離是0 1步最多能抵達的距離是1(1) 2步最多能抵達的距離是2(1 1) 3步最多能抵達的距離是4(1 2 1) 4步最多能抵達的距離是6(1 2 ...
- MySQL历史版本下载(官方)
http://downloads.mysql.com/archives/community/ 社区版本(开源免费)
- HTML&CSS基础学习笔记1.10—添加链接
我们可以设置链接的目标,使我们点击后可以跳转到我们想要去的地方. <a>标签的 href 属性用于指定超链接目标的 URL. 在页面中添加的<a>标签,浏览器会用特殊效果显示, ...
- fontresize 移动端的手机字体 大小设置
这段js 需要置于页面上端 也就是 需要先加载js然后加载页面 (这段js是原生js而且比较短小 基本对页面加载速度无影响) FontResize : function(maxWidth){ (fun ...
- 注解 @Resource与@Autowired与@Component的使用
在java代码中使用@Autowired或@Resource注解方式进行装配,这两个注解的区别是:@Autowired 默认按类型装配,@Resource默认按名称装配,当找不到与名称匹配的bean才 ...
- [SDOI2008]仪仗队
P2158 [SDOI2008]仪仗队 题目描述 作为体育委员,C君负责这次运动会仪仗队的训练.仪仗队是由学生组成的N * N的方阵,为了保证队伍在行进中整齐划一,C君会跟在仪仗队的左后方,根据其视线 ...
- 通过select选项动态异步加载内容
通过监听select的change事件来异步加载数据. 1:效果图: 选择Good: 选择 Bad: 2:index.html <!DOCTYPE html> <html lang= ...
- 将主机IDS OSSEC日志文件存入MYSQL的方法
将主机IDS OSSEC日志文件存入MYSQL的方法 http://www.freebuf.com/articles/system/6139.html http://ossec-docs.readth ...
- universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法
在listview/gridview中使用UIL来display每个item的图片,当图片数量较多需要滑动滚动时会出现卡顿,而且加载过的图片再次上翻后依然会重复加载(显示设置好的加载中图片) 最近在使 ...
- scheme 解释器Guile 使用
GNU Guile是一种Scheme编程语言的解释器和虚拟机.Guile是GNU Ubiquitous Intelligent Language for Extensions的缩写.Guile是GNU ...