文件上传简介

文件上传的核心点

1:用<input type=”file”/> 来声明一个文件域。File:_____ <浏览>.
2:必须要使用post方式的表单。
3:必须设置表单的类型为multipart/form-data.是设置这个表单传递的不是key=value值。传递的是字节码.

对于一个普通的表单来说只要它是post类型。默认就是

Content-type:application/x-www-from-urlencoded
表现形式
1:在request的请求头中出现。
2:在form声明时设置一个类型enctype="application/x-www-form-urlencoded";
如果要实现文件上传,必须设置enctype=“multipart/form-data”

表单与请求的对应关系:



4、如何获取上传的文件的内容-以下是自己手工解析txt文档


/**
 * 如果一个表单的类型是post且enctype为multipart/form-date
 * 则所有数据都是以二进制的方式向服务器上传递。
 * 所以req.getParameter("xxx")永远为null。
 * 只可以通过req.getInputStream()来获取数据,获取正文的数据
 * 
 * @author wangjianme
 *
 */
public class UpServlet extends HttpServlet {
	public void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		req.setCharacterEncoding("UTF-8");
		String txt = req.getParameter("txt");//返回的是null
		System.err.println("txt is :"+txt);
		System.err.println("=========================================");
		InputStream in = req.getInputStream();
//		byte[] b= new byte[1024];
//		int len = 0;
//		while((len=in.read(b))!=-1){
//			String s = new String(b,0,len);
//			System.err.print(s);
//		}
		BufferedReader br = new BufferedReader(new InputStreamReader(in));
		String firstLine = br.readLine();//读取第一行,且第一行是分隔符号
		String fileName = br.readLine();
		fileName = fileName.substring(fileName.lastIndexOf("\\")+1);// bafasd.txt"
		fileName = fileName.substring(0,fileName.length()-1);
		
		br.readLine();
		br.readLine();
		String data = null;
		//获取当前项目的运行路径
		String projectPath = getServletContext().getRealPath("/up");
		PrintWriter out  = new PrintWriter(projectPath+"/"+fileName);
		while((data=br.readLine())!=null){
			if(data.equals(firstLine+"--")){
				break;
			}
			out.println(data);
		}
		out.close();
	}
}















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值