从原始的Servlet来实现文件的上传,代码如下:
采用的是Multipart/form-data的方式上传文件。针对Multipart/form-data方式的上传解释,参考如下文件:
下面为具体的实现方式:
1、通过getInputStream()取得上传文件。
注意:这种方式相当的原始,通过分析body中的字符,然后再进行硬编码切割出文件字节,再进行保存。
JSP:
文件1: | |
文件2: | |
文件3: | |
Text: | |
Servlet:
提示:使用了servlet3.0的标注免配置功能。
packageuploadtest;importjava.io.DataInputStream;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjavax.servlet.ServletException;importjavax.servlet.annotation.WebServlet;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/*** Servlet implementation class UploadServlet*/@WebServlet("/UploadServlet")public class UploadServlet extendsHttpServlet {private static final long serialVersionUID = 1L;/***@seeHttpServlet#HttpServlet()*/
publicUploadServlet() {super();//TODO Auto-generated constructor stub
}/***@seeHttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {//TODO Auto-generated method stub
}/***@seeHttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {//TODO Auto-generated method stub
this.processRequest(request, response);
}//通过getInputStream()取得上传文件。循环多文件
/*** Processes requests for both HTTP
* POST
methods.
*
*@paramrequest servlet request
*@paramresponse servlet response
*@throwsServletException if a servlet-specific error occurs
*@throwsIOException if an I/O error occurs*/
protected voidprocessRequest(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
response.setContentType("text/html;charset=UTF-8");//读取请求Body
byte[] body =readBody(request);//取得所有Body内容的字符串表示
String textBody = new String(body, "ISO-8