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 = 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();
  }
}}

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

时间: 2024-10-17 18:07:33

Servlet doPost方法同时上传图片和传递参数的相关文章

UIWebView开发中,js与oc,js与swift交互,相互传递参数的方法

实际开发中经常遇到需要向webView传递参数或从webView取参数,在此写了个超简单的demo供大家参考,本人js刚学了一天,所以不足之处海涵. 废话不多说,直接上代码 oc版 1 #import "ViewController.h" 2 @interface ViewController ()<UIWebViewDelegate> 3 @property (nonatomic, strong)UIWebView * webView; 4 @end 5 6 @imple

Java RestTemplate post请求传递参数遇到的坑

https://blog.csdn.net/LDY1016/article/details/80002126 最近使用Spring 的 RestTemplate 工具类请求接口的时候发现参数传递的一个坑,也就是当我们把参数封装在Map里面的时候,Map 的类型选择. 使用RestTemplate post请求的时候主要可以通过三种方式实现 1.调用postForObject方法  2.使用postForEntity方法 3.调用exchange方法 postForObject和postForEn

Servlet的doGet与doPost方法的区别与使用

Servlet的doGet与doPost方法的区别与使用 2016年07月07日 13:05:13 阅读数:10222 一,区别 在使用表单提交数据到服务器的时候有两张方式可共选择,一个是post一个是get.可在<form>中的method属性中指定提交的方式.如:<form action="inputForm"method="get">,如果不指定method属性,则会默认该属性为"get"方式. Get和post都能

Ajax中Put和Delete请求传递参数无效的解决方法(Restful风格)

本文装载自:http://blog.csdn.net/u012737182/article/details/52831008    感谢原文作者分享 开发环境:Tomcat9.0 在使用Ajax实现Restful的时候,有时候会出现无法Put.Delete请求参数无法传递到程序中的尴尬情况,此时我们可以有两种解决方案:1.使用地址重写的方法传递参数.2.配置web.xml项目环境. 测试的程序为: @RequestMapping(value = "/member", method =

传值:web.xml传递参数 即在Servlet中获取web.xml里的值

1 传值:web.xml传递参数 2 3 在web.xml中的Servlet里配置多个init-param 4 <servlet> 5 ... 6 <init-param> 7 <param-name>name</param-name> 8 <param-value>关羽</param-value> 9 </init-param> 10 <init-param> 11 <param-name>age

Jmeter 跨线程组传递参数 之两种方法

终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直到登录接口的参数失效了,需再次发送一次登录接口,又可以多次使用其参数,下面举例子: 1.登录接口中利用 Json Path Extractor 获取到登录接口的响应参数,(怎么获取上一节讲过) 终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为

转:Web页面通过URL地址传递参数常见问题及检测方法

Web页面即我们在浏览器中所看到的网页,在Web应用程序中,其页面往往需要进行动态切换和数据交互,页面间的数据常规传递方法有多种,本文主要介绍Web页面处理程序中常见的URL地址参数传递方法,包括概述其实现原理.特点和常见问题,最后介绍检测该方式常见应用问题的测试思路和方法. 1.web页面的概念 Web是internet上一个非常重要的资源信息网,产生于20世纪90年代初,它遵循超文本传输协议,以超文本或超媒介的形式传送各种各样的信息,为用户提供了一个具有友好的图形化界面--Web页面,以便用

.net中常用的几种页面间传递参数的方法

转自:http://www.cnblogs.com/lxshanye/archive/2013/04/11/3014207.html 参考:http://www.cnblogs.com/zhangkai2237/archive/2012/05/06/2486462.html 1. 使用QueryString变量    QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或

工作随笔——Java调用Groovy类的方法、传递参数和获取返回值

接触Groovy也快一年了,一直在尝试怎么将Groovy引用到日常工作中来.最近在做一个功能的时候,花了点时间重新看了下Java怎么调用Groovy的方法.传递参数和获取返回值. 示例Groovy代码如下: # TestGroovy.groovy 定义testC方法,传入3个参数,返回处理后的数据 def testC(int numA, int numB, int numC) { "传入参数:" + numA + numB + numC + "计算之和为:" + (