更新:这种方法出毛病了!jvm堆溢出了!
原因:byte[] bytes = new byte[fileForInput.available()]这句话在遇到比较大的图片时,开的内存就大,压根就不能这么写!
解决方法一:http://stackoverflow.com/questions/9579874/out-of-memory-when-encoding-file-to-base64
解决方法二:不要传图片了!直接传URL吧!!
—————————————————————————————
其实跟上一篇blog差不多,客户端还是用HttpURLConnection。
服务器端Servlet在传输图片时,先将图片编码为base64格式(也就是一个字符串),然后放在JSONObject里,顺带着其他数据一起传给客户端。
客户端在收到JSONObject后,将base64格式字符串取出来,再解码写入到一个文件里,得到图片。
OK,下面上代码,服务器端:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
JSONObject json = new JSONObject();
//图片路径
String picPath = getServletContext().getRealPath("")+"/images/XXX.jpg"