目的:用jmeter测试MultipartFile上传多个文件

今天用jmeter测试上传文件的时候遇到点问题,以此博客作为记录,同时也让大家少走弯路。


1.加入文件上传的jar包

<!-- 文件上传 -->
		<dependency>
		    <groupId>commons-fileupload</groupId>
		    <artifactId>commons-fileupload</artifactId>
		    <version>1.3.1</version>
		</dependency>

2.在spring-mvc.xml中配置MultipartResolver处理器 

    <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="defaultEncoding" value="UTF-8" />
		<!-- 指定所上传文件的总大小,单位字节。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
		<property name="maxUploadSize" value="10240000" />
	</bean>

3.jmeter配置如下, use multipart/form-data for post打勾,同时MIME类型设置为multipart/form-data,参数名称必须和controller中的名字一致,另外不需要再画蛇添足添加信息头的设置



4.controller如下

public Result getPics(HttpServletRequest request,@RequestParam(value = "file", required = false)MultipartFile[] file) {
		System.out.println("进来了————————————————");
		Result<String> result = new Result<String>();
		// 身份证识别url
        String idcardIdentificate = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard";
        System.out.println("长度:"+file.length);
		if(file!=null&&file.length==2){  
            //循环获取file数组中得文件  
          for(int i = 0;i<file.length;i++){
              MultipartFile files = file[i];  
              byte[] imgData;
			try {
				imgData = files.getBytes();
				String imgStr = Base64Util.encode(imgData);
				System.out.println("base64St:"+imgStr);
				//身份证正面
				if(i==0) {
					String params = "id_card_side=front&" + URLEncoder.encode("image", "UTF-8") + "="
		                    + URLEncoder.encode(imgStr, "UTF-8");
					String accessToken = "#####调用鉴权接口获取的token#####";
					JSONObject idcardResp= JSONObject.parseObject(HttpUtil.post(idcardIdentificate, accessToken, params));
					String status = idcardResp.get("image_status").toString();
					String cardType=idcardResp.get("risk_type").toString();
					//身份证读取不正常
					if(!"normal".equals(status)||!"risk_type".equals(cardType)) {
						result.setError(status,BaiduErrorConstant.errorMap.get(status));
						result.setData(idcardResp.toString());
						return result;
					}
				}
				//身份证背面
				else {
					String params = "id_card_side=back&" + URLEncoder.encode("image", "UTF-8") + "="
		                    + URLEncoder.encode(imgStr, "UTF-8");
				}
			} 
			 catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
          }
		}
		return null;
	}


Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐