使用commons-fileupload上传文件到服务器:
第三方的common-fileupload的jar包在:http://download.csdn.net/detail/cw_hello1/9523975中下载(免积分)
使用单纯的servlet和两个jar文件实现文件的上传。
在HTML文件使用form表单的file选择文件:
<span style="font-size:18px;"><form action="http://localhost:8084/test/Servlet_01" method="post" enctype="multipart/form-data" >
选择文件所在的位置1:<input type="file" name="myfile" />
选择文件所在的位置2:<input type="file" name="myfile" />
选择文件所在的位置3:<input type="file" name="myfile" />
选择文件所在的位置4:<input type="file" name="myfile" />
<input type="submit" value="上传"/>
</form></span>
后台代码:
在web.xml文件中加入
<servlet>
<servlet-name>Servlet_01</servlet-name>
<servlet-class>com.servlet.Servlet_01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet_01</servlet-name>
<url-pattern>/Servlet_01</url-pattern>
</servlet-mapping>
创建一个在com.servlet包下的Servlet_01的Java文件
代码
package com.servlet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class Servlet_01 extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置返回的文本的编码格式
response.setContentType("text/html;charset=UTF-8");
//设置请求的解析的编码格式,否则不能识别中文
request.setCharacterEncoding("utf-8");
DiskFileItemFactory factory=new DiskFileItemFactory();
//获得上传的文件对象
ServletFileUpload upload=new ServletFileUpload(factory);
//读文件流
InputStream is=null;
//写文件流
OutputStream os=null;
try {
//获得所有的上传文件列表,因为上传的文件可以不是一个
List<FileItem> list=upload.parseRequest(request);
//使用加强版的for循环。遍历数组的元素
for (FileItem fileItem : list) {
if(fileItem.isFormField()){
}else{
//看看文件名字时候为空,为空则不上传
if(fileItem.getName()!=null&&!"".equals(fileItem.getName())){
//获得上传文件输入流
is=fileItem.getInputStream();
//设置文件保存的位置
File savefile=new File(this.getServletContext().getRealPath("upload"),fileItem.getName());
savefile.getParentFile().mkdirs();
savefile.createNewFile();
//设置保存文件输出流
os=new FileOutputStream(savefile);
//文件保存的位置
System.out.println(savefile.getAbsolutePath());
long length=0;
byte []buffer=new byte[1024];
//使用while循环将文件内容写入到新建的文件中
while((length=is.read(buffer))>0){
os.write(buffer);
}
}
//关闭输出入流
if(is!=null){
is.close();
is=null;
}
if(os!=null){
os.close();
os=null;
}
}
}
} catch (FileUploadException ex) {
Logger.getLogger(Servlet_01.class.getName()).log(Level.SEVERE, null, ex);
}finally{
if(is!=null){
is.close();
is=null;
}
if(os!=null){
os.close();
os=null;
}
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("get");
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("post");
processRequest(request, response);
}
}
就可以将文件上传到服务器。