私の Java サーバーでは、iOS クライアントから次のような InputStream を取得します。
--0xKhTmLbOuNdArY
Content-Disposition: form-data; filename="Image001"
Content-Type: image/png
âPNG
IHDR���@���@���™iqfi���gAMA��Ø»7äÈ���tEXtSoftware�Adobe ImageReadyq…e<��IDATx⁄‰;iê]Uôflπ˜Ω◊Ø;ΩB::õY
ê6LÄ“Õ¿
... etc. ...
≠Yy<‘_˜øüYmc˚æØ…ægflóÏK$å±çe0ˆΩleIë¢êH¢Tñê–Üd
≠≤§àä6D¸>˙÷˜˚<øÁ˘˝˜˚º^sÁ=Áû{ÓπÁ‹œπ˜úÄÎ:!44¡@
--0xKhTmLbOuNdArY--
最初と最後の行は私の HTTP 境界です。2 行目と 3 行目は、イメージ ファイルに関する情報です。そして、5行目から最後から2番目の行まで、バイト配列として必要な画像ファイルがあります。
では、画像情報を文字列として取得し、画像ファイルを InputStream からバイト配列として取得するにはどうすればよいでしょうか? ソリューションは高速かつ効率的である必要があります (ファイル サイズは数メガバイト / < 10 MB になる可能性があります)。
私のアプローチ:
InputStream を文字列に変換してから分割し、2 番目の文字列をバイト配列に変換します...
String str = org.apache.commons.io.IOUtils.toString( inputStream );
String[] strArray1 = str.split( "\r\n\r\n", 2 );
byte[] bytes = strArray1[1].getBytes();
その方法は非常に高速ですが、バイト配列が破損しているようです。そのバイト配列から画像ファイルを作成できません... 一部の文字が正しく変換されません。
おそらく誰かが助けることができますか?