servlet处理文件上传8
来源:互联网 发布:智能算法 编辑:程序博客网 时间:2024/06/14 20:04
要做到文件上传,客户端编程有几个要点
method的值使用post
enctype的值使用multipart/form-data
每一个控件都要有那么属性
例如
<form action="upload" method="post" enctype="multipart/form-data"> <input type="file" name="file1"><br /> <input type="submit" value="上传" /> </form>
Servlet配置
1.在Servlet类上使用@MultipartConfig
MultipartConfig的属性
1.fileSizeThershold int型 是(可选) 描述:当前数据量大于该值时,内容将被写入文件。
2.location String型 是(可选) 描述:存放生成文件的地址
3.maxFileSize long型 是(可选) 描述:允许上传的文件最大值,默认为-1,表示没有限制。
4.maxRequestSize long型 是(可选) 描述:针对 multipart/form-data 请求的最大数量,默认为-1,表示没有限制。
@WebServlet("/upload")@MultipartConfigpublic class UploadServlet extends HttpServlet {
2.在web.xml文件的servlet标签中使用multipart-config标签
<servlet> <servlet-name>uploadservlet</servlet-name> <servlet-class>com.tanlan.javaees1.UploadServlet</servlet-class> <multipart-config /> </servlet> <servlet-mapping> <servlet-name>uploadservlet</servlet-name> <url-pattern>/upload</url-pattern> </servlet-mapping>
获取文件上传中文件本身的信息
在Multipart请求中,每一个表单控件,都会被转化成一个Part
怎么获取Part呢?
使用HttpServletRequest获取Part
getPart:返回指定名称的part
getParts:返回请求中所有的part
@WebServlet("/upload")@MultipartConfigpublic class UploadServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Part part = request.getPart("file1"); System.out.println(part.getName()); System.out.println(part.getSubmittedFileName()); System.out.println(part.getSize()); System.out.println(part.getContentType()); Collection<String> heardersNames = part.getHeaderNames(); for (String headerName : heardersNames) { System.out.println(headerName + ":" + part.getHeader(headerName)); } String uploadDir=getServletContext().getRealPath("/upload"); part.write(uploadDir+"\\"+part.getSubmittedFileName()); }}
Part接口的方法请参考相关的API文档
接下来有几个比较重要的方法:
write:参数是绝对位置,若是相对位置,则相对location的值
delete删除上传的文件
getInputStream:获取输入流
参数是绝对位置的时候
uploadDir=getServletContext().getRealPath("/upload");part.write(uploadDir+"\\"+part.getSubmittedFileName());
相对位置的时候
@WebServlet("/upload2")@MultipartConfig(maxRequestSize=1024*1024*15,maxFileSize=1024*1024*8,location="C:\\")public class UploadServlet2 extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println(request.getParameter("name")); Collection<Part> parts=request.getParts(); for (Part part : parts) { //文件 if(part.getContentType()!=null){ String fileName=part.getSubmittedFileName(); if(!fileName.equals("")){ part.write(fileName); } } } }
服务器端编程要点:
检查Part是普通表单控件还是文本上传控件,判断content-type的值是否是null
检查文件名是否为null,为空则表示未选择上传文件,判断文件名是否是””
文件存在则调用part的write方法,传入一个绝对路径或相对于location属性指定的路径
System.out.println(request.getParameter("name")); Collection<Part> parts=request.getParts(); for (Part part : parts) { //文件 if(part.getContentType()!=null){ String fileName=part.getSubmittedFileName(); if(!fileName.equals("")){ part.write(fileName); } } }
- servlet处理文件上传8
- servlet 处理文件上传的方法【记录】
- HttpClient应用 与 Servlet 处理文件上传
- servlet处理html表单文件上传
- Servlet处理POST上传的文件
- Servlet处理一个上传的文件
- Servlet上传文件乱码处理(ServletFileUpload乱码处理)
- 文件上传servlet处理代码分享/ckeditor图片上传servlet处理
- ajax实现文件上传以及后台servlet中的处理总结
- ajax异步文件上传,servlet处理,含demo
- [java后台]servlet对上传文件的处理
- ajax异步文件上传,servlet处理,含demo
- android批量文件上传(服务器采用servlet处理)
- 文件上传简单案例(后台Servlet处理)
- Flex + servlet 上传文件
- JSP+servlet上传文件
- servlet文件上传
- Servlet文件上传
- linux 命令终端提示符显示-bash-4.2#解决方法
- Android okHttp网络请求之缓存控制Cache-Control
- 流策略概述Traffic Policy
- 1559:data2 and nba2k
- Vijos1334 NASA的食物计划
- servlet处理文件上传8
- 剑指Offer_面试题34_丑数
- java线程状态和线程方法
- DFA敏感词过滤算法
- Vijos1375 大整数
- Android okHttp网络请求之Retrofit+Okhttp+RxJava组合
- html输入框只允许输入数字及小数点
- C++拷贝构造函数详解
- poj 3368