残りのAPI呼び出しを介してファイル(さまざまなタイプ - pdf、txt、docx、tifなど)を取得し、そのファイルのバイナリデータをエンコードされていないコードをbase64でエンコードし、ファイルを別の場所に書き出します(別のプロセスがピックアップする)。上記のすべてが動作していますが、ファイルの種類がtxt以外の場合は、新しく書き出されたファイルは開かれません。バイナリデータを読み書きするときの不要なデータ
public File retrieveDocument(String in_ItemId, File in_DestinationFile, Map<String, String> in_DocumentProperties)
throws IOException {
byte[] binaryData = new byte[8198];
try {
String url = "filestore url";
RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
messageConverters.add(new MappingJacksonHttpMessageConverter());
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
restTemplate.setMessageConverters(messageConverters);
Map documentMap = restTemplate.getForObject(url, Map.class);
if (documentMap.get("binaryData") != null) {
binaryData = Base64.decodeBase64(((String) documentMap.get("binaryData")).getBytes());
}
OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(in_DestinationFile));
outputStream.write(binaryData);
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return in_DestinationFile;
}
私は、テキストエディタ(すなわち、メモ帳++)で、元のファイルと新しいファイルの両方を開いて、両者を比較すると、追加の文字の数が、新しいファイルに(主に疑問符)があります。以下は、tif画像の例です。新しいファイルのいくつかの追加文字の下に^を追加しました。
オリジナルファイル:
II* P €?à@$
„BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=HdR9$–M'”JeR¹d¶]/˜LfS9¤Öm7œNgS¹äö}? PhT:%3Ñ©Tºe6O¨
‡ÄbqX¼f7•ß²<¦W-—ÌfsY¼æw=ŸÐhlÐ=—M§ÔjuZ½f·]¯Øll™-–×m·Ünw[½æ÷}¿à_tœ'Çäry\¾g7hÚsú]
新しいファイル:私が間違ってやっているのよう
II* P €?à@$
„BaP¸d6ˆDbQ8¤V-ŒFcQ¸äv=?HdR9$–M'”JeR¹d¶]/˜LfS9¤Öm7œNgS¹äö}? PhT:%3Ñ©Tºe6?O¨
^ ^
‡ÄbqX¼f7?•ß²<¦W-—ÌfsY¼æw=ŸÐhlÐ=—M§ÔjuZ½f·]¯Øll™-–×m·Ünw[½æ÷}¿à_tœ'?Çäry\¾g7?hÚsú]
^ ^
任意のアイデア?
'String'は' byte [] 'ではなく' char [] 'のシーケンスです。バイナリデータを表現することは適切ではありません。 –