postman上传文件调接口,使用POST的form-data方式
文件数据在后台方法中的HttpServletRequest中。
①request中文件信息
②其实request中不仅有文件信息,还有其他文本信息也在里面,只不过需要通过key获取到该json字符串然后转成对象,这样可能会比较麻烦,需要前端Content-Type为form-data格式。
通过postman模拟
②-1 设置为text格式,将json串粘贴进去
②-2 使用文本的话,需要将request强转成MultipartHttpServletRequest再读文件里的信息
②后台使用map接收文本和文件,content-type为form-data.png
②request接收content里的内容,postman这样模拟。如果form-data上传的是文件,需要把request强转成MuiltPara..,再从里面读流.png
control类中方法
/**
* 导入
*/
@RequestMapping(value = "/leadingIn", method = RequestMethod.POST)
public ResponseObj<Boolean> leadingIn(InvestDetail investDetail,
HttpServletRequest request,
Map<String, InputStream> files) {
//测试
try {
MultipartHttpServletRequest mulRequest = (MultipartHttpServletRequest) request;
Set<Map.Entry<String, MultipartFile>> set = mulRequest.getFileMap().entrySet();
Map<String, InputStream> listFile = new LinkedHashMap<>();
System.out.println("个数" + set.size());
for (Map.Entry<String, MultipartFile> each : set) {
String fileName = each.getKey();
MultipartFile file = each.getValue();
//这里需要上传FTP
try {
listFile.put(fileName, file.getInputStream());
} catch (Exception ex) {
return new ResponseObj<>(false, null);
}
}
String formjson = mulRequest.getParameter("content");
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
OrderReturn orderReturn = mapper.readValue(formjson, OrderReturn.class);
boolean result = iInstallWorkOrder.receiptOrder(orderReturn, listFile);
// boolean result = iInstallWorkOrder.upLoadFile(listFile);
// boolean result = true;
return new ResponseObj<>(result, null);
} catch (Exception ex) {
return new ResponseObj<>(false, null);
}
}
public ResponseObj<Boolean> saveOrSubmit(HttpServletRequest request) {
Business business = null;
try {
String json = request.getParameter("content");
if (!StringUtils.isEmpty(json)) {
ObjectMapper oMapper = new ObjectMapper();
oMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
business = oMapper.readValue(json, Business.class);
}
} catch (IOException e) {
e.printStackTrace();
}
}
网友评论