[英]How to pass JSON array from AngularJS Controller to the Spring Controller?
[英]How to pass array of JSON objects with Files from Spring Controller?
我想要一個Spring REST Controller,它返回包含文件(基本上是圖片)的對象數組。 我能做的是:
或在代碼中,如下所示:
@RequestMapping(value = "/getInfo")
public ResponseEntity<Object> getInfo() throws Throwable {
ArrayList<Object> objList = new ArrayList<Object>();
for (int i = 0; i < 10; i++) {
Object obj = new Object();
obj.setField1(0);
obj.setField2(0);
String stringImg = // Convert image to base 64 string
obj.setStringImg(stringImg);
objList.add(obj);
}
return new ResponseEntity<Object>(objList, HttpStatus.OK);
}
我聽說轉換和使用base 64字符串會浪費空間,但這並不是最佳實踐。 有替代的或更好的方法嗎?
您沒聽Base64
, Base64
將文件大小增加了33% ,如果將所有要上傳的文件放在內存中,則很有可能出現內存不足異常。 在我看來,將圖像上傳到Spring Web服務的最佳方法是制作一個使用Spring MultiPartFile
上傳圖像的方法(這將為您處理大文件,存儲在文件系統中而不是內存中),然后將其保存到數據庫中並保存在另一種方法是通過ID或名稱獲取您存儲的圖像。
我的意思是一個例子:
public long uploadImage(@RequestParam("file") MultipartFile file)){
InputStream in = new ByteArrayInputStream(file.getBytes());
// save the file to the database as blob or clob
return file id or name;
}
然后在另一種方法中,以Blob或Clob的形式從數據庫中獲取圖像,將其轉換為字符串,創建列表並將其返回給客戶端。 創建包含所有文件的列表將仍然將文件保存在內存中,但是至少您將為每個文件節省33%的文件大小。
另一種選擇是讓客戶端一次獲取一張圖像,並讓它用所有文件構造列表。 順便說一下,您的選擇取決於圖像的大小以及將使用此服務的用戶數量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.