将图片上传到服务器
我已经google了很多但它不起作用。 我发现很多网站都有信息,但是我的应用程序崩溃了所有网站。 我要打开的图片是:“lastfile.png”。 它存储在内部存储器中,因此我用openFileInput(“lastfile.png”)打开它;
我在AsyncTask中执行此操作。
到目前为止这是我的代码:
class PostTask extends AsyncTask{ @Override protected String doInBackground(String... uri) { if(picture == null) { HttpClient httpclient = new DefaultHttpClient(); HttpResponse response; String responseString = null; try { response = httpclient.execute(new HttpGet(uri[0])); StatusLine statusLine = response.getStatusLine(); if(statusLine.getStatusCode() == HttpStatus.SC_OK){ ByteArrayOutputStream out = new ByteArrayOutputStream(); response.getEntity().writeTo(out); out.close(); responseString = out.toString(); } else{ response.getEntity().getContent().close(); throw new IOException(statusLine.getReasonPhrase()); } } catch (ClientProtocolException e) { Toast.makeText(AddStoryActivity.this, getResources().getString(R.string.error), Toast.LENGTH_LONG).show(); e.printStackTrace(); } catch (IOException e) { Toast.makeText(AddStoryActivity.this, getResources().getString(R.string.error), Toast.LENGTH_LONG).show(); e.printStackTrace(); } return responseString; } else { /* IMAGE UPLOAD */ } return ""; } @Override protected void onPostExecute(String result) { super.onPostExecute(result); progress.cancel(); Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show(); } }
我这样做的方法是将img压缩为一种字符串,然后将其作为名称值对发送,然后使用php解码服务器端的字符串。
Bitmap bitmapOrg = BitmapFactory.decodeResource(“您在设备上的图像路径”);
ByteArrayOutputStream bao = new ByteArrayOutputStream(); bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 90, bao); byte [] ba = bao.toByteArray(); String ba1= Base64.encodeToString(ba, 0); ArrayList nameValuePairs = new ArrayList (); nameValuePairs.add(new BasicNameValuePair("image",ba1)); try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://your_url/sink.php"); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); }catch(Exception e){ Log.e("log_tag", "Error in http connection "+e.toString()); }
SINK.PHP
';
?>
有很多类似的问题,这对我来说是完美的答案。
看这个 :
链接1
Android的上传图像到服务器
完整答案