我正在尝试将几个参数(包括byte []作为一个)传递给Rest服务。在Service方法中,当我使用参数并构造一个文件时...我看到一个损坏的文件。 以下是我的代码:
public class MultiParameters {
@JsonProperty(value="strName")
public String strName;
@JsonProperty(value="in")
public byte[] in;
public String strName2;
public String getStrName2() {
return strName2;
}
public void setStrName2(String strName2) {
this.strName2 = strName2;
}
public String getStrName() {
return strName;
}
public void setStrName(String strName) {
this.strName = strName;
}
public byte[] getIn() {
return in;
}
public void setIn(byte[] in) {
this.in = in;
}
RestController:
@RequestMapping(value= "/upload", method = RequestMethod.POST)
public void upload(@RequestBody MultiParameters obj){
try {
System.out.println("str name : "+obj.getStrName());
System.out.println("str name2 : "+obj.getStrName2());
System.out.println("bytes lenghts : "+obj.getIn());
FileOutputStream fos = new FileOutputStream(new File("D:\\Test.txt"));
fos.write(obj.getIn());
fos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
任何人都可以告诉我这里的错误是什么吗?
我正在使用Post Man以JSON的形式将输入作为RAW数据传递来测试我的服务。
感谢。
答案 0 :(得分:1)
您可以将字节数组编码为Base64字符串,然后在控制器中接收后将其解码回字节数组。
答案 1 :(得分:1)
通过给定的代码,我猜你正在尝试上传文件。如果是这种情况,你可以简单地上传文件并在控制器中接受它们,如下面的示例所示,我们接受一个客户对象和一个文件对象
@RequestMapping(value = "/registration/uploadFile", method = RequestMethod.POST)
public Customer saveFile(@RequestPart("customer") @Valid Customer customer, @RequestPart("file") @Valid MultipartFile file) {
return customerService.saveFile(customer, file);
}