这篇文章主要为大家详细介绍了Java上传文件到服务器端的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Web文件上传采用POST的方式,与POST提交表单不同的是,上传文件需要设置FORM的enctype属性为multipart/form-data.由于上传的文件会比较大,因此需要设置该参数指定浏览器使用二进制上传。如果不设置,enctype属性默认为application/x-www-form-urlencoded,使用浏览器将使用ASCII向服务器发送数据,导致发送文件失败。
上传文件要使用文件域(,并把FORM的Enctype设置为multipart/form-data.
客户端上传页面如图所示:
代码如下:
upload.html
客户端运行的代码很简单,服务器要复杂一点。要想获取其中的内容,必须根据HTTP协议所规定的格式来解析浏览器提交的Request.
解析二进制流比较麻烦。已经有许多类库已经完成了这项工作,例如SmartUpload与Apache Commons Fileupload.SmartUpload是一个商业类库,解析Request过程中数据存放在内存里,因此速度较快,但上传较大文件时会发生内存溢出。Apache Commons Fileupload是一个免费的开源的类库。一些框架比如Struts里集成了Apache Common Fileupload类库来实现文件上传。
如图所示:
代码如下:
package com.helloweenvsfei.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.URLEncoder; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.DiskFileUpload; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; public class UploadServlet extends HttpServlet { private static final long serialVersionUID = 7523024737218332088L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.getWriter().println("请以 POST 方式上传文件"); } @SuppressWarnings("unchecked") public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { File file1 = null, file2 = null; String description1 = null, description2 = null; response.setCharacterEncoding("UTF-8"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(""); out.println(""); out.println(" A Servlet"); out.println(" "); out.println(" "); out.println(""); out.println("
"); out.println(" "); out.println(""); out.flush(); out.close(); } }
程序运行效果如图所示:
本文已被整理到了《Java上传操作技巧汇总》,欢迎大家学习阅读。
以上就是Java上传文件到服务器端的方法的详细内容,更多请关注0133技术站其它相关文章!