第一步:显示页面
<body>
上传下载<br/>
<form action="<c:url value='UploadServlet'/>"
method="post"
enctype="multipart/form-data">
File:<input type="file" name="txt"><br/>
desc:<input type="text"name="dsc"><br/>
<input type="submit" value="上传">
</form>
</body>
第二步:开发UploadServlet
package czb.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;
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException {
// 设置编码
request.setCharacterEncoding("UTF-8");
// 获取值
String name = request.getParameter("dsc");// 设置了enctype="multipart/form-data"后,getParameter获取不到数据
System.err.println("获取的值是:" + name);
// 获取项目发布后的真实路径
String path = request.getServletContext().getRealPath("/up");
System.err.println("path is>>>>>:" + path);
// 通过io获取值
InputStream in = request.getInputStream();
BufferedReader br = newBufferedReader(newInputStreamReader(in, "GBK"));
// 读取的前四行不要,但第一行作为结束的标志
String split = br.readLine();
String ds = br.readLine();// Content-Disposition
String fileName = ds.substring(ds.lastIndexOf("=") + 1);
fileName= fileName.replace("\"", "");// f:\aa.txt
fileName= fileName.substring(fileName.lastIndexOf("\\") + 1);
System.err.println("filename is :"+ fileName);
br.readLine();
br.readLine();
// 声明保存路径
PrintWriter pw = newPrintWriter(path + "/" + fileName);
// 以下读取正文
String line = null;
while ((line = br.readLine())!= null){
if (line.contains(split)){
break;
}
pw.println(line);
}
pw.close();
}
}
分析上传时的HTTP请求类型:
POST/05124/UploadServlet HTTP/1.1[微软用户1]
Accept:image/gif, image/x-xbitmap, l, */*[微软用户2]
Referer:http://localhost:8080/05124/
Accept-Language:zh-cn
Content-Type:multipart/form-data;[微软用户3] boundary=---------------------------7dd5d91e015a[微软用户4]
Accept-Encoding:gzip, deflate
User-Agent:Mozilla/4.0 (compatible; ..)
Host:localhost:8080
Content-Length:377
Connection:Keep-Alive
Cache-Control:no-cache
Cookie:JSESSIONID=64E34ABD84E1A8D08DE8E70817F5A515
-----------------------------7dd5d91e015a[微软用户5]
Content-Disposition:form-data; name="txt"; filename="D:\sn.txt"
Content-Type:text/plain
SQLyogUltimate v8.32
Name: Any
Registration Code: 26f359fc-e3f6-4727-8af1-72a1a4a0819d
-----------------------------7dd5d91e015a[微软用户7]
Content-Disposition:form-data; name="dsc"
澶ф瀹?
-----------------------------7dd5d91e015a--[微软用户8]