文件上传介绍

文件上传


问题:什么是文件上传?为什么使用文件上传?
就是将客户端资源,通过网络传递到服务器端。        
就是因为数据比较大,我们必须通过文件上传才可以完成将数据保存到服务器端操作.
            
文件上传的本质:就是IO流的操作。
            
演示:文件 上传应该 怎样操作?


    
浏览器端:

 

1.method=post 只有post才可以携带大数据
2.必须使用<input type='file' name='f'>要有name属性
3.encType="multipart/form-data"


        
服务器端:


request对象是用于获取请求信息。
它有一个方法getInputStream(); 可以获取一个字节输入流,通过这个流,可以读取到
所有的请求正文信息.
            
文件上传原理:
浏览器端注意上述三件事,在服务器端通过流将数据读取到,在对数据进行解析.
将上传文件内容得到,保存在服务器端,就完成了文件上传。
            
在实际开发中,不需要我们进行数据解析,完成文件上传。因为我们会使用文件上传的工具,它们已经封装好的,
提供API,只要调用它们的API就可以完成文件上传操作.
    
我们使用的commons-fileupload,它是apache提供的一套开源免费的文件上传工具。

 

 

 
package cn.learn.web.servlet;

import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Upload1Servlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//通过request获取一个字节输入流,将所有的请求正文信息读取到,打印到控制台。
		InputStream is=request.getInputStream();
		
		byte[] b=new byte[1024];
		int len=-1;
		
		while((len=is.read(b))!=-1){
			
			System.out.print(new String(b,0,len));
			
		}
		is.close();
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

实现web开发中的文件上传功能,需完成如下二步操作:  
    在web页面中添加上传输入项
    在servlet中读取上传文件的数据,并保存到服务器硬盘中。
如何在web页面中添加上传输入项?
    <input type=“file”>标签用于在web页面中添加文件上传输入项,设置文件上传输入项时须注意:
    1、必须要设置input输入项的name属性,否则浏览器将不会发送上传文件的数据。
    2、必须把form的enctype属值设为multipart/form-data.设置该值后,浏览器在上传文件时,将把文件数据附带在http请求消息体中,
        并使用MIME协议对上传的文件进行描述,以方便接收方对上传数据进行解析和处理。
    3、表单的提交方式要是post

如何在Servlet中读取文件上传数据,并保存到本地硬盘中?
    Request对象提供了一个getInputStream方法,通过这个方法可以读取到客户端提交过来的数据。
        但由于用户可能会同时上传多个文件,在servlet端编程直接读取上传数据,并分别解析出相应的文件数据
        是一项非常麻烦的工作,示例。
    为方便用户处理文件上传数据,Apache 开源组织提供了一个用来处理表单文件上传的一个开源组件( Commons-fileupload ),
        该组件性能优异,并且其API使用极其简单,可以让开发人员轻松实现web文件上传功能,因此在web开发中实现文件上传功能,
        通常使用Commons-fileupload组件实现。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值