问题描述
当我尝试从客户端(.pdf 文件 + 对象字段,如作者、标题、发布日期)向服务器发送数据时,服务器不会对此做出反应。 我将使用 FileChooser 从目录中获取文件,之后我将从文本框中获取数据并将其设置为 uploadBook 对象。我将像 http://kong.github.io/unirest-java/#requests 的示例一样发送我的数据 但它对我不起作用。
InputStream file = new FileInputStream(new File("/MyFile.zip"));
Unirest.post("http://httpbin.org")
.field("upload",file,"MyFile.zip")
.asEmpty();
客户端部分
控制器
loadBookButton.setonAction(
actionEvent -> {
FileChooser.ExtensionFilter extFilter =
new FileChooser.ExtensionFilter("PDF files (*.pdf)","*.pdf");
fileChooser.getExtensionFilters().add(extFilter);
fileChooser.setTitle("Download book");
choosedFile = fileChooser.showOpenDialog(stage);
});
MultipartBody bookLoadResult;
uploadedBook.setAuthor(tbAuthor.getText());
uploadedBook.setTitle(tbTitle.getText());
uploadedBook.setPublish_date(tbPublishDate.getText());
try {
file = new FileInputStream(new File(choosedFile.getAbsolutePath()));
} catch (FileNotFoundException e) {
e.printstacktrace();
}
bookLoadResult =
Unirest.post("http://localhost:8080/bookshelf/add")
.header("accept","application/json")
.field("author",uploadedBook.getAuthor())
.field("title",uploadedBook.getTitle())
.field("publish_date",uploadedBook.getPublish_date())
.field("file_data",choosedFile.getName());
上传的图书实体
package org.openjfx.DB.Entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.Type;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UploadedBook {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String author;
private String title;
private String publish_date;
@Lob
@Type(type = "org.hibernate.type.TextType")
private byte[] file_data;
}
服务器部分
控制器
@Slf4j
@RestController
@RequestMapping("bookshelf")
public class BookshelfController {
@Autowired private BookshelfService bookshelfService;
@RequestMapping(
value = "/add",method = RequestMethod.POST,consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public void savingBook(UploadedBookDTO uploadedBookDTO) {
log.info("[BookshelfController.savingBook] uploadedBookDTO = {}",uploadedBookDTO);
bookshelfService.savingBook(uploadedBookDTO);
}
;
@RequestMapping(
value = "/books",method = RequestMethod.GET,consumes = MediaType.ALL_VALUE)
public List countOfBooks() {
List<UploadedBook> booksList = new ArrayList<UploadedBook>();
booksList = bookshelfService.countOfBooks();
return booksList;
}
;
}
上传的BookDTO
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UploadedBookDTO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@NotNull @NotBlank public String author;
@NotNull @NotBlank public String title;
@NotNull @NotBlank public String publish_date;
@NotNull
@NotBlank
@Type(type = "org.hibernate.type.TextType")
@Lob public Blob file_data;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)