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; ...
随机推荐
- (原)windows8.1上使用opencv for python
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6204100.html 参考网址: http://www.docs.opencv.org/master/ ...
- centos卸载自带的apache(httpd)
.[root@localhost etc]# rpm -qa|grep httpd,查看与httpd相关软件包. httpd--.el5_2.CentOS. .然后删除httpd: [root@loc ...
- python入门安装
一.在python官网上下载python3.4或python2.7版本,这两个版本目前比较稳定,安装第3方包相对而言没有什么问题. 二.安装成功后,在计算机->属性->高级系统设置-> ...
- Selenium2Library关键字
对Selenium2Library关键字的整理和翻译.英文不好,仅供参考. 1.Add Cookie [ name | value | path=None | domain=None | secure ...
- BIOS讲解
首先 BIOS其实没什么神奇的 就是 Bisic input/output System,所以基本输入输出系统是一块装入了启动和自检程序的EPROM或EEPROM集成块,实际上它是被固化在计算机R ...
- vi使用入门指南
一.Unix编辑器概述 编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少的部件.Unix及其相似的ix操作系统系列中,为方便各种用户在各个不同的环境中使用,提供了一系列的ex编辑 ...
- SaltStack运行任务卡住了,怎么办?
将相关的JOB ID杀死即可. salt-run jobs.active salt "*" saltutil.signal_job JOBID 15
- DOS批处理命令判断操作系统版本、执行各版本对应语句
DOS批处理命令判断操作系统版本.执行各版本对应语句 昨天在家里试用 netsh interface ip set address 这些命令更改上网IP.DNS.网关等,今天将那些代码拿来办公室 ...
- requirejs-define jquery 快速初学实例(一)
原文地址:http://6yang.net/articles_view.php?id=1103 2011-10-18 13:12:01 by [6yang], 1029 visits, 收藏 | 返回 ...
- inconvertible types; cannot cast 'android.supoort.v4.app.Fragment' to 'com.example.sevenun.littledemo.fragment.NewsTitleFragment'
inconvertible types; cannot cast 'android.supoort.v4.app.Fragment' to 'com.example.sevenun.littledem ...