gpt4 book ai didi

java - 如何将附件作为请求发送,其中附件是请求正文的字段?

转载 作者:行者123 更新时间:2023-12-01 21:14:24 25 4
gpt4 key购买 nike

我正在使用 Spring 框架实现 RESTful Web 服务。有一种情况,我需要接受请求,其中请求正文的字段将是文件(PDF 或图像)。我的请求正文将如下所示:

{
"id" : "101",
"name" : "John",
"report" :
}

上面请求正文中的报告字段将是一个文件(PDF 或图像)。我读了很多这方面的文章,但无法得到正确的答案。我得到了单独接受文件但不将文件作为请求正文字段的解决方案请帮帮我

最佳答案

好吧,有很多方法可以实现这一点。我将解释一种这样的方法。

第 1 步:创建 StudentReport 类。

注意这里使用的 byte[] 数组。

public class StudentReport {

private long id;
private String Name;
byte[] report;

public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public byte[] getReport() {
return report;
}
public void setReport(byte[] report) {
this.report = report;
}

}

第 2 步:创建所需的休息终点。

在这里我想告诉大家一些事情。Json 必须作为字符串发送到端点,并将报告保留为空。这将单独传递,如下所示。

@RestController
@RequestMapping("/NameYourController/")
public class MyController{


@RequestMapping(value = "addDetails", method = RequestMethod.POST , consumes = "multipart/form-data")
public StudentReport addProduct(@RequestParam String studentReportJson, @RequestParam MultipartFile report) throws JsonParseException, JsonMappingException, IOException {


//Convert your Json in Strign format as actual object
StudentReport studentReport = new ObjectMapper().readValue(studentReportJson, StudentReport.class);

//convert file to byte array
byte[] myReport = report.getBytes();

studentReport.setReport(myReport);

// Now, pdf is set in the object
// do whatever you want to do with it like save in database etc
//based on that , have some return type defined. I have just used returned the object in this example .
return studentReport; // Spring boot auto converts this object to Json when send to UI.Note that Json is an object and Json String is string object consisting of Json. We recieved Json String but returning Json object


}

//and other endpoints you want to define
}

就这样完成了。请注意,为此您需要导入 Jackson 库。如果您使用 Maven,则可以将其添加到 pom.xml 中。

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.12</version>
</dependency>

现在,您将如何测试您的休息终点。一种方法是使用将使用这些的 UI 代码。但随后要确保该代码是正确的。如果您没有 UI 代码,仍然可以执行此操作。这是由 chrome 应用程序 PostMan 完成的。但是,为此您需要使用 Chrome 网络浏览器。

Youtube 有很多关于如何使用 PostMan 的视频。我只会给您一个屏幕截图,说明如何在您的情况下具体使用:

注意图像中的这些内容 -> POST、URL 路径、BODY、表单数据、TEXT、FILE。 :)
如果您有一些返回数据,输出将在 postman 中显示在下面。(图像中未显示)

enter image description here

关于java - 如何将附件作为请求发送,其中附件是请求正文的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40547901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com