首页 > 学院 > 开发设计 > 正文

文件上传的核心点 一(59)

2019-11-15 00:11:30
字体:
来源:转载
供稿:网友
文件上传的核心点 一(59)

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”

表单与请求的对应关系:


例子:如何获取上传的文件的内容(获取txt文件)

package cn.hx.servlet;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.PRintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* 如果一个表单的类型是post且enctype为multipart/form-date

* 则所有数据都是以二进制的方式向服务器上传递。

* 所以req.getParameter("xxx")永远为null。

* 只可以通过req.getInputStream()来获取数据,获取正文的数据

*/

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();

}

}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表