在我的 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 行到倒数第二行,有我需要的图像文件作为字节数组。
那么如何从 InputStream 中获取字符串形式的图像信息和字节数组形式的图像文件呢? 解决方案应该快速高效(文件大小可以是几兆字节/< 10 MB)。
我的做法:
我将 InputStream 转换为字符串,然后将其拆分并将第二个字符串转换为字节数组...
String str = org.apache.commons.io.IOUtils.toString( inputStream );
String[] strArray1 = str.split( "\r\n\r\n", 2 );
byte[] bytes = strArray1[1].getBytes();
这种方式非常快,但是字节数组似乎损坏了。我无法从该字节数组创建图像文件...某些字符转换不正确。
也许有人可以帮忙?