我正在尝试通过http将照片发送到我的服务器。所以我将图像转换为字节,然后我将其作为名称值对发送。这是我下面的代码。现在我的麻烦是服务器端,我如何从收到的字节串重新创建和存储图像
我也在使用java servlets
Android上的代码
ByteArrayOutputStream baos = new ByteArrayOutputStream();
pinnedV.getPhoto().compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] b = baos.toByteArray();
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("photo",new String(b)));
HttpClient httpclient = new DefaultHttpClient();
HttpPost request = new HttpPost(URL);
try {
request.setEntity(new UrlEncodedFormEntity(params));
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
ResponseHandler<String> handler = new BasicResponseHandler();
try {
result = httpclient.execute(request, handler);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
服务器上的代码
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String fromClientphoto= request.getParameter("photo");
byte[] b = fromClientphoto.getBytes();
FileOutputStream fos = new FileOutputStream("D:\\img.png");
fos.write(b);
fos.close();
}
以上代码会写入一个文件但不会作为图像打开。也就是这个byte[] b = fromClientphoto.getBytes();
正确的方式转换回与Android手机上相同的字节?任何想法?
答案 0 :(得分:1)
答案 1 :(得分:0)
不要打扰工具包图片,只需将内容写入文件..
你可以将图像发布到android之外的Servlet吗?设置一个通过基本HTML表单执行相同操作的虚拟页面,将问题分解为越来越小的部分,直到找出哪个部分导致问题...
答案 2 :(得分:0)
您不应将文件(即图片)作为常规名称 - 值参数从设备发送,并使用request.getParameter(name);
进行阅读。
相反:
MultipartEntity
(请参阅other questions)。它已经是httpclient的一部分。