3 回答

TA貢獻1830條經驗 獲得超3個贊
解決此問題而無需使用需要磁盤上文件的FileSystemResource的一種方法是使用ByteArrayResource,這樣您就可以在帖子中發送字節數組(此代碼在Spring 3.2.3中有效):
MultiValueMap<String, Object> map = new LinkedMultiValueMap<String, Object>();
final String filename="somefile.txt";
map.add("name", filename);
map.add("filename", filename);
ByteArrayResource contentsAsResource = new ByteArrayResource(content.getBytes("UTF-8")){
@Override
public String getFilename(){
return filename;
}
};
map.add("file", contentsAsResource);
String result = restTemplate.postForObject(urlForFacade, map, String.class);
我重寫ByteArrayResource的getFilename,因為如果我不得到空指針異常(顯然,這取決于java激活.jar是否在類路徑中,如果存在,它將使用文件名來嘗試確定內容類型)

TA貢獻1936條經驗 獲得超7個贊
前幾天,我也遇到了同樣的問題。Google搜索將我帶到了這里和其他幾個地方,但沒有一個提供解決此問題的方法。我最終將上傳的文件(MultiPartFile)保存為tmp文件,然后使用FileSystemResource通過RestTemplate上傳它。這是我使用的代碼
String tempFileName = "/tmp/" + multiFile.getOriginalFileName();
FileOutputStream fo = new FileOutputStream(tempFileName);
fo.write(asset.getBytes());
fo.close();
parts.add("file", new FileSystemResource(tempFileName));
String response = restTemplate.postForObject(uploadUrl, parts, String.class, authToken, path);
//clean-up
File f = new File(tempFileName);
f.delete();
我仍在尋找解決此問題的更優雅的方法。
- 3 回答
- 0 關注
- 2782 瀏覽
添加回答
舉報