在我的Java服务器我从iOS客户端的InputStream,它看起来像这样得到:如何将InputStream转换为字符串到Java中的字节数组?
--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获取图像信息作为字符串和图像文件作为字节数组? 该解决方案应该快速高效(文件大小可以是几兆字节/< 10MB)。
我的方法:
我InputStream的转换为字符串,然后把它分解和转换的第二个字符串的字节数组...
String str = org.apache.commons.io.IOUtils.toString(inputStream);
String[] strArray1 = str.split("\r\n\r\n", 2);
byte[] bytes = strArray1[1].getBytes();
这种方式是非常快的,但字节数组似乎已经损坏。我无法从该字节数组创建图像文件...某些字符被错误地转换。
也许有人可以帮忙吗?