文件上传的原始实现
来源:互联网 发布:mac是什么牌子化妆品 编辑:程序博客网 时间:2024/05/09 02:43
第一步:显示页面
<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
[微软用户6]
-----------------------------7dd5d91e015a[微软用户7]
Content-Disposition:form-data; name="dsc"
澶ф瀹?
-----------------------------7dd5d91e015a--[微软用户8]
请求首行
以下都是请求头。
就是用户设置的enctype
数据分隔符号。随机。
说明文件的数据开始了。
正文部分。
又是一个文件。
结束后面的多两个小小线。
- 文件上传的原始实现
- SpringMVC 实现文件的上传与下载--较为原始
- JAVA文件上传-原始的SERVLET方式
- 实现文件的上传
- 文件上传的实现
- 实现文件的上传
- 实现文件的上传
- 文件上传的实现
- 原始的xml文件
- 客户端svn上传后,原始文件在服务器的什么位置?
- 客户端svn上传后,原始文件在服务器的什么位置?
- 文件上传的实现(C#)
- 实现Web文件的上传
- Servlet 实现文件的上传
- struts上传文件的实现
- gridview实现文件的上传
- struts2实现文件的上传
- 实现文件的下载上传
- iptables 指南
- UVa 10192 - Vacation(LCS水题)
- A. Room Leader
- Memory matters - even in Erlang (再次说明了了解内存如何工作的必要性)
- 利用mkimage 把zImage转换为uImage的方法
- 文件上传的原始实现
- 王淮、龚世海谈如何打造优秀的技术团队
- 动态改变Android控件大小
- vivi命令详解
- xmerl_xpath的简单例子
- 觉醒吧,。。。。。
- linux爱好者之基础篇--目录
- 英语四级万能模板
- QT+VS2010静态配置