Tôi đang phát triển một dịch vụ RESTful dựa trên Spring 3.2. Tôi đang phải đối mặt với một vấn đề với một bộ điều khiển xử lý yêu cầu HTTP đa pha trộn, với phần thứ hai với dữ liệu định dạng JSON được định dạng JSON và phần thứ hai với một tệp hình ảnh.@RequestPart với yêu cầu nhiều phần hỗn hợp, Spring MVC 3.2
Tôi đang sử dụng @RequestPart annotation cho nhận được yêu cầu
@RequestMapping(value = "/User/Image", method = RequestMethod.POST, consumes = {"multipart/mixed"},produces="applcation/json")
public
ResponseEntity<List<Map<String, String>>> createUser(
@RequestPart("file") MultipartFile file, @RequestPart(required=false) User user) {
System.out.println("file" + file);
System.out.println("user " + user);
System.out.println("received file with original filename: "
+ file.getOriginalFilename());
// List<MultipartFile> files = uploadForm.getFiles();
List<Map<String, String>> response = new ArrayList<Map<String, String>>();
Map<String, String> responseMap = new HashMap<String, String>();
List<String> fileNames = new ArrayList<String>();
if (null != file) {
// for (MultipartFile multipartFile : files) {
String fileName = file.getOriginalFilename();
fileNames.add(fileName);
try {
file.transferTo(new File("C:/" + file.getOriginalFilename()));
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
responseMap.put("displayText", file.getOriginalFilename());
responseMap.put("fileSize", "" + file.getSize());
response.add(responseMap);
HttpHeaders httpHeaders = new HttpHeaders();
httpHeaders.add("Accept", "application/json");
return new ResponseEntity<List<Map<String, String>>>(response,
httpHeaders, HttpStatus.OK);
}
User.java sẽ như thế nào this-
@XmlRootElement(name = "User")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
private int userId;
private String name;
private String email;
private String company;
private String gender;
//getter setter of the data members
}
Để hiểu biết của tôi, sử dụng các chú thích @RequestPart Tôi mong chờ phần nhiều phần dữ liệu XML để được đánh giá tùy thuộc vào kiểu nội dung của nó và cuối cùng không được sắp xếp vào lớp người dùng của tôi (tôi đang sử dụng Jaxb2, marshaller/unmarhaller được cấu hình đúng trong ngữ cảnh ứng dụng và thủ tục làm việc tốt cho tất cả các bộ điều khiển khác metho ds khi tôi chuyển dữ liệu XML dưới dạng nội dung và sử dụng chú thích @RequestBody). Nhưng những gì thực sự xảy ra là, mặc dù tập tin được tìm thấy và phân tích cú pháp thành MultipartFile, phần "người dùng" không bao giờ được nhìn thấy và yêu cầu luôn thất bại, không khớp với chữ ký của phương thức điều khiển.
Tôi đã sao chép sự cố với một số loại ứng dụng khách và tôi tự tin định dạng của yêu cầu nhiều phần là ok.
Vui lòng giúp tôi giải quyết vấn đề này, Có thể một số giải pháp thay thế sẽ ở đó để nhận yêu cầu hỗn hợp/nhiều phần.
Cảm ơn và Kính trọng,
Raghvendra
Bạn đã bao giờ thử với 'tiêu thụ = {" multipart/form- dữ liệu "}'? –