将图片上传到服务器

我已经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的上传图像到服务器

完整答案