一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的更多相关文章

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

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

  2. C#-WebForm-文件上传-FileUpload控件

    FileUpload - 选择文件,不能执行上传功能,通过点击按钮实现上传 默认选择类型为所有类型 //<上传>按钮 void Button1_Click(object sender, E ...

  3. FileUpload组件

    package com.itheima.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IO ...

  4. 如何实现修改FileUpload样式

    这里先隐藏FileUpload 然后用一个input button和一个text来模拟FileUpload 具体代码为 <asp:FileUpload ID="FileUpload1& ...

  5. 上传文件fileupload

    文件上传: 需要使用控件-fileupload 1.如何判断是否选中文件? FileUpload.FileName -  选中文件的文件名,如果长度不大于0,那么说明没选中任何文件 js - f.va ...

  6. fileupload图片预览功能

    FileUpload上传图片前首先预览一下 看看效果: 在专案中,创建aspx页面,拉上FileUpload控件一个Image,将用来预览上传时的图片. <%@ Page Language=&q ...

  7. textbox button 模拟fileupload

    方案一:  <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.asp ...

  8. FileUpload 上传文件,并实现c#使用Renci.SshNet.dll实现SFTP文件传输

    fileupload上传文件和jquery的uplodify控件使用方法类似,对服务器控件不是很熟悉,记录一下. 主要是记录新接触的sftp文件上传.服务器环境下使用freesshd搭建好环境后,wi ...

  9. C# 自定义FileUpload控件

    摘要:ASP.NET自带的FileUpload控件会随着浏览器的不同,显示的样式也会发生改变,很不美观,为了提高用户体验度,所以我们会去自定义FileUpload控件 实现思路:用两个Button和T ...

  10. FileUpload实现文件上传(包含多文件)

    package com.hzml.serve; import java.io.File; import java.io.IOException; import java.io.PrintWriter; ...

随机推荐

  1. (原)windows8.1上使用opencv for python

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6204100.html 参考网址: http://www.docs.opencv.org/master/ ...

  2. centos卸载自带的apache(httpd)

    .[root@localhost etc]# rpm -qa|grep httpd,查看与httpd相关软件包. httpd--.el5_2.CentOS. .然后删除httpd: [root@loc ...

  3. python入门安装

    一.在python官网上下载python3.4或python2.7版本,这两个版本目前比较稳定,安装第3方包相对而言没有什么问题. 二.安装成功后,在计算机->属性->高级系统设置-> ...

  4. Selenium2Library关键字

    对Selenium2Library关键字的整理和翻译.英文不好,仅供参考. 1.Add Cookie [ name | value | path=None | domain=None | secure ...

  5. BIOS讲解

    首先  BIOS其实没什么神奇的 就是  Bisic input/output System,所以基本输入输出系统是一块装入了启动和自检程序的EPROM或EEPROM集成块,实际上它是被固化在计算机R ...

  6. vi使用入门指南

    一.Unix编辑器概述 编辑器是使用计算机的重要工具之一,在各种操作系统中,编辑器都是必不可少的部件.Unix及其相似的ix操作系统系列中,为方便各种用户在各个不同的环境中使用,提供了一系列的ex编辑 ...

  7. SaltStack运行任务卡住了,怎么办?

    将相关的JOB ID杀死即可. salt-run jobs.active salt "*" saltutil.signal_job JOBID 15

  8. DOS批处理命令判断操作系统版本、执行各版本对应语句

    DOS批处理命令判断操作系统版本.执行各版本对应语句   昨天在家里试用  netsh interface ip set address 这些命令更改上网IP.DNS.网关等,今天将那些代码拿来办公室 ...

  9. requirejs-define jquery 快速初学实例(一)

    原文地址:http://6yang.net/articles_view.php?id=1103 2011-10-18 13:12:01 by [6yang], 1029 visits, 收藏 | 返回 ...

  10. 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 ...