首页 > 代码库 > Servlet doPost方法同时上传图片和传递参数

Servlet doPost方法同时上传图片和传递参数

上传图片和传递参数

上传图片和文件属于enctype="multipart/form-data" 
form中加入enctype="multipart/form-data"时整个表单被封装,字符将转成二进制流,因此request.getParameter("user_type")是得不到值的:
默认情况,传递参数编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form- data,才能完整的传递文件数据,
 
同时上传文件与图片
DiskFileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);List items = null;try {     items = upload.parseRequest(request);} catch (FileUploadException e) {e.printStackTrace();} // 解析request请求Iterator iter = items.iterator();while (iter.hasNext()) {    FileItem item = (FileItem) iter.next();if (item.isFormField()) {  // 如果是表单域 ,就是非文件上传元素    String name = item.getFieldName(); // 获取name属性的值    String value = http://www.mamicode.com/item.getString(); // 获取value属性的值if (item.getFieldName().equals("intro")) {    System.out.println(value+"yeah");}} else {    String fieldName = item.getFieldName(); // 文件域中name属性的值    String fileName = item.getName(); // 文件的全路径,绝对路径名加文件名    String contentType = item.getContentType(); // 文件的类型    long size = item.getSize(); // 文件的大小,以字节为单位    File saveFile = new File("D:/test.jpg"); // 定义一个file指向一个具体的文件try {    item.write(saveFile);// 把上传的内容写到一个文件中  } catch (Exception e) {    e.printStackTrace();  } }}

 

要解析二进制流来得到文本参数

Servlet doPost方法同时上传图片和传递参数