• <small id='siHBk'></small><noframes id='siHBk'>

  • <tfoot id='siHBk'></tfoot><legend id='siHBk'><style id='siHBk'><dir id='siHBk'><q id='siHBk'></q></dir></style></legend>

    <i id='siHBk'><tr id='siHBk'><dt id='siHBk'><q id='siHBk'><span id='siHBk'><b id='siHBk'><form id='siHBk'><ins id='siHBk'></ins><ul id='siHBk'></ul><sub id='siHBk'></sub></form><legend id='siHBk'></legend><bdo id='siHBk'><pre id='siHBk'><center id='siHBk'></center></pre></bdo></b><th id='siHBk'></th></span></q></dt></tr></i><div id='siHBk'><tfoot id='siHBk'></tfoot><dl id='siHBk'><fieldset id='siHBk'></fieldset></dl></div>
      <bdo id='siHBk'></bdo><ul id='siHBk'></ul>

      1. 将图像从android上传到PHP服务器

        时间:2023-05-21
      2. <tfoot id='6lLcq'></tfoot>

            <small id='6lLcq'></small><noframes id='6lLcq'>

              • <bdo id='6lLcq'></bdo><ul id='6lLcq'></ul>

                <i id='6lLcq'><tr id='6lLcq'><dt id='6lLcq'><q id='6lLcq'><span id='6lLcq'><b id='6lLcq'><form id='6lLcq'><ins id='6lLcq'></ins><ul id='6lLcq'></ul><sub id='6lLcq'></sub></form><legend id='6lLcq'></legend><bdo id='6lLcq'><pre id='6lLcq'><center id='6lLcq'></center></pre></bdo></b><th id='6lLcq'></th></span></q></dt></tr></i><div id='6lLcq'><tfoot id='6lLcq'></tfoot><dl id='6lLcq'><fieldset id='6lLcq'></fieldset></dl></div>

              • <legend id='6lLcq'><style id='6lLcq'><dir id='6lLcq'><q id='6lLcq'></q></dir></style></legend>
                    <tbody id='6lLcq'></tbody>
                  本文介绍了将图像从android上传到PHP服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  限时送ChatGPT账号..

                  在我的应用程序中,我正在将图像从我的设备上传到本地网络服务器...执行代码后,会在服务器中创建一个 .jpg 文件,但不会打开它.并且服务器中文件的大小与原始文件不同.

                  In my app i am uploading an image from my device to a local web server... after executing the code a .jpg file gets created in the server but it does not gets opened. And the size of the file in server is different from the original file.

                  Android 活动:--

                  public class MainActivity extends Activity {
                  
                  
                  private static int RESULT_LOAD_IMAGE = 1;
                  @Override
                  protected void onCreate(Bundle savedInstanceState) {
                      super.onCreate(savedInstanceState);
                      setContentView(R.layout.activity_main);
                  
                      Button btnSelectImage=(Button) findViewById(R.id.uploadButton);
                      btnSelectImage.setOnClickListener(new OnClickListener() {
                  
                          @Override
                          public void onClick(View v) {
                  
                          Intent i=new   Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                  
                          startActivityForResult(i, RESULT_LOAD_IMAGE);
                  
                          }
                      });
                  
                  }
                  
                  @Override
                  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                      // TODO Auto-generated method stub
                      super.onActivityResult(requestCode, resultCode, data);
                  
                      if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data!=null) {
                  
                          Uri selectedImage=data.getData();
                          String[] filePathColumn={MediaStore.Images.Media.DATA};
                  
                          Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null);
                          cursor.moveToFirst();
                  
                          int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                          String picturePath = cursor.getString(columnIndex);
                          cursor.close();
                  
                  
                          Bitmap bitmap=BitmapFactory.decodeFile(picturePath);
                  
                          ImageView im = (ImageView) findViewById(R.id.imgBox);
                          im.setImageBitmap(bitmap);
                  
                          /*
                           * Convert the image to a string
                           * */
                          ByteArrayOutputStream stream = new ByteArrayOutputStream();
                          bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream); //compress to which format you want.
                          byte [] byte_arr = stream.toByteArray();
                          String image_str = Base64.encodeToString(byte_arr,Base64.DEFAULT);
                  
                          /*
                           * Create a name value pair for the image string to be passed to the server
                           * */
                          ArrayList<NameValuePair> nameValuePairs = new  ArrayList<NameValuePair>();            
                          nameValuePairs.add(new BasicNameValuePair("image",image_str));
                  
                  
                          JSONObject jsonString=new JSONObject();
                          try {
                              jsonString.put("img", image_str);
                          } catch (JSONException e) {
                              // TODO Auto-generated catch block
                              e.printStackTrace();
                          }
                  
                          new uploadImageToPhp().execute(jsonString);
                  
                  
                  
                      }
                  
                  
                  }
                  @Override
                  public boolean onCreateOptionsMenu(Menu menu) {
                      // Inflate the menu; this adds items to the action bar if it is present.
                      getMenuInflater().inflate(R.menu.main, menu);
                  
                  
                      return true;
                  }
                  public class uploadImageToPhp extends AsyncTask<JSONObject, Void, Void>
                  {
                      String dataToSend=null;
                  
                      public static final String prefix="http://";                                                        //prefix of the urls
                      public static final String server_ip="172.16.26.155";                                                   //the ip address where the php server is located    
                  
                      public static final String completeServerAddress=prefix+server_ip+"/test_upload/upload_image.php";                  //Exact location of the php files
                  
                      @Override
                      protected Void doInBackground(JSONObject... params) {
                  
                          dataToSend="image="+params[0];
                          communicator(completeServerAddress, dataToSend);
                  
                  
                  
                  
                          return null;
                      }
                  
                      public void communicator(String urlString,String dataToSend2)
                      {
                          String result=null;
                  
                          try
                          {
                              URL url=new URL(urlString);
                              URLConnection conn=url.openConnection();
                  
                              HttpURLConnection httpConn=(HttpURLConnection) conn;
                              httpConn.setRequestProperty("Accept", "application/json");
                              httpConn.setRequestProperty("accept-charset", "UTF-8");
                              httpConn.setRequestMethod("POST");         
                              httpConn.connect();
                  
                              //Create an output stream to send data to the server
                              OutputStreamWriter out=new OutputStreamWriter(httpConn.getOutputStream());
                              out.write(dataToSend2);
                              out.flush();
                  
                              int httpStatus = httpConn.getResponseCode();            
                              System.out.println("Http status :"+httpStatus);
                  
                              if(httpStatus==HttpURLConnection.HTTP_OK)
                              {
                                  Log.d("HTTP STatus", "http connection successful");
                  
                                  BufferedReader in = new BufferedReader(new InputStreamReader(httpConn.getInputStream(),"UTF-8"));
                                  StringBuilder sb = new StringBuilder();
                                  String inputLine;
                                  while ((inputLine = in.readLine()) != null)
                                  {
                                      System.out.println(inputLine);
                                      sb.append(inputLine+"
                  ");
                                  }
                                  in.close();
                                  result=sb.toString();                       
                  
                                  try
                                  {
                  
                                      //jsonResult = new JSONObject(result);
                                  }
                                  catch(Exception e)
                                  {
                                       Log.e("JSON Parser", "Error parsing data " + e.toString());
                                  }
                  
                  
                              }
                              else
                              {
                                  System.out.println("Somthing went wrong");
                              }
                          } catch (MalformedURLException e) {
                              // TODO Auto-generated catch block
                              e.printStackTrace();
                          } catch (IOException e) {
                              // TODO Auto-generated catch block
                              e.printStackTrace();
                          }
                  
                  
                      }
                  
                  
                  }
                  
                  }
                  

                  PHP 代码:-

                   $recievedJson=$_REQUEST['image'];
                  $imageContent=json_decode($recievedJson,true);
                   $base=$imageContent["img"];
                  
                   $binary=base64_decode($base);
                  
                   echo $binary;
                  header('Content-Type: bitmap; charset=utf-8');
                  $file = fopen('uploaded_image.jpg', 'wb');
                  fwrite($file, $binary);
                  fclose($file);
                  

                  推荐答案

                  使用下面的代码.它会做同样的事情.

                  Use below code. It will do the same.

                  public class UploadImage extends Activity {
                      InputStream inputStream;
                          @Override
                      public void onCreate(Bundle icicle) {
                              super.onCreate(icicle);
                              setContentView(R.layout.main);
                  
                              Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.icon);           ByteArrayOutputStream stream = new ByteArrayOutputStream();
                              bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream); //compress to which format you want.
                              byte [] byte_arr = stream.toByteArray();
                              String image_str = Base64.encodeBytes(byte_arr);
                              ArrayList<NameValuePair> nameValuePairs = new  ArrayList<NameValuePair>();
                  
                              nameValuePairs.add(new BasicNameValuePair("image",image_str));
                  
                               Thread t = new Thread(new Runnable() {
                  
                              @Override
                              public void run() {
                                    try{
                                           HttpClient httpclient = new DefaultHttpClient();
                                           HttpPost httppost = new HttpPost("server-link/folder-name/upload_image.php");
                                           httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                                           HttpResponse response = httpclient.execute(httppost);
                                           String the_string_response = convertResponseToString(response);
                                           runOnUiThread(new Runnable() {
                  
                                                  @Override
                                                  public void run() {
                                                      Toast.makeText(UploadImage.this, "Response " + the_string_response, Toast.LENGTH_LONG).show();                          
                                                  }
                                              });
                  
                                       }catch(Exception e){
                                            runOnUiThread(new Runnable() {
                  
                                              @Override
                                              public void run() {
                                                  Toast.makeText(UploadImage.this, "ERROR " + e.getMessage(), Toast.LENGTH_LONG).show();                              
                                              }
                                          });
                                             System.out.println("Error in http connection "+e.toString());
                                       }  
                              }
                          });
                           t.start();
                          }
                  
                          public String convertResponseToString(HttpResponse response) throws IllegalStateException, IOException{
                  
                               String res = "";
                               StringBuffer buffer = new StringBuffer();
                               inputStream = response.getEntity().getContent();
                               int contentLength = (int) response.getEntity().getContentLength(); //getting content length…..
                                runOnUiThread(new Runnable() {
                  
                              @Override
                              public void run() {
                                  Toast.makeText(UploadImage.this, "contentLength : " + contentLength, Toast.LENGTH_LONG).show();                     
                              }
                          });
                  
                               if (contentLength < 0){
                               }
                               else{
                                      byte[] data = new byte[512];
                                      int len = 0;
                                      try
                                      {
                                          while (-1 != (len = inputStream.read(data)) )
                                          {
                                              buffer.append(new String(data, 0, len)); //converting to string and appending  to stringbuffer…..
                                          }
                                      }
                                      catch (IOException e)
                                      {
                                          e.printStackTrace();
                                      }
                                      try
                                      {
                                          inputStream.close(); // closing the stream…..
                                      }
                                      catch (IOException e)
                                      {
                                          e.printStackTrace();
                                      }
                                      res = buffer.toString();     // converting stringbuffer to string…..
                  
                                      runOnUiThread(new Runnable() {
                  
                                      @Override
                                      public void run() {
                                         Toast.makeText(UploadImage.this, "Result : " + res, Toast.LENGTH_LONG).show();
                                      }
                                  });
                                      //System.out.println("Response => " +  EntityUtils.toString(response.getEntity()));
                               }
                               return res;
                          }
                  }
                  

                  PHP 代码

                  <?php
                      $base=$_REQUEST['image'];
                       $binary=base64_decode($base);
                      header('Content-Type: bitmap; charset=utf-8');
                      $file = fopen('uploaded_image.jpg', 'wb');
                      fwrite($file, $binary);
                      fclose($file);
                      echo 'Image upload complete!!, Please check your php file directory……';
                  ?>
                  

                  更新

                  NameValuePair 和 Http 类已被弃用,所以我已经尝试过这段代码,它对我有用.希望有帮助!

                  NameValuePair and Http Classes are deprecated so, I've tried this code and it's working for me. Hope that helps!

                  private void uploadImage(Bitmap imageBitmap){
                      ByteArrayOutputStream stream = new ByteArrayOutputStream();
                      imageBitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);
                      byte[] b = stream.toByteArray();
                      String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
                      ArrayList<Pair<String, String>> params = new ArrayList<Pair<String, String>>();
                      params.add(new Pair<>("image", encodedImage));
                  
                      try {
                          new AsyncUploader().execute(my_upload_php, getQuery(params));
                      } catch (UnsupportedEncodingException e) {
                          e.printStackTrace();
                      }
                  }
                  
                  private String getQuery(List<Pair<String, String>> params) throws UnsupportedEncodingException{
                      StringBuilder result = new StringBuilder();
                      boolean first = true;
                  
                      for(Pair<String, String> pair : params){
                          if(first)
                              first = false;
                          else
                              result.append("&");
                  
                          result.append(URLEncoder.encode(pair.first, "UTF-8"));
                          result.append("=");
                          result.append(URLEncoder.encode(pair.second, "UTF-8"));
                      }
                      return result.toString();
                  }
                  
                  private class AsyncUploader extends AsyncTask<String, Integer, String>
                  {
                      @Override
                      protected String doInBackground(String... strings) {
                          String urlString = strings[0];
                          String params = strings[1];
                          URL url = null;
                          InputStream stream = null;
                          HttpURLConnection urlConnection = null;
                          try {
                              url = new URL(urlString);
                              urlConnection = (HttpURLConnection) url.openConnection();
                              urlConnection.setRequestMethod("POST");
                              urlConnection.setDoOutput(true);
                  
                              urlConnection.connect();
                  
                              OutputStreamWriter wr = new OutputStreamWriter(urlConnection.getOutputStream());
                              wr.write(params);
                              wr.flush();
                  
                              stream = urlConnection.getInputStream();
                              BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"), 8);
                              String result = reader.readLine();
                              return result;
                          }catch (IOException ioe){
                              ioe.printStackTrace();
                          } finally {
                              if (urlConnection != null)
                                  urlConnection.disconnect();
                          }
                          return null;
                      }
                  
                      @Override
                      protected  void onPostExecute(String result) {
                          Toast.makeText(MakePhoto.this, result, Toast.LENGTH_SHORT).show();
                      }
                  }
                  

                  这篇关于将图像从android上传到PHP服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:通过ajax post将文件与表单数据一起发送 下一篇:PHP 上传文件 - 仅图像检查

                  相关文章

                  最新文章

                    • <bdo id='z5DJB'></bdo><ul id='z5DJB'></ul>
                    <legend id='z5DJB'><style id='z5DJB'><dir id='z5DJB'><q id='z5DJB'></q></dir></style></legend>
                  1. <i id='z5DJB'><tr id='z5DJB'><dt id='z5DJB'><q id='z5DJB'><span id='z5DJB'><b id='z5DJB'><form id='z5DJB'><ins id='z5DJB'></ins><ul id='z5DJB'></ul><sub id='z5DJB'></sub></form><legend id='z5DJB'></legend><bdo id='z5DJB'><pre id='z5DJB'><center id='z5DJB'></center></pre></bdo></b><th id='z5DJB'></th></span></q></dt></tr></i><div id='z5DJB'><tfoot id='z5DJB'></tfoot><dl id='z5DJB'><fieldset id='z5DJB'></fieldset></dl></div>

                      <small id='z5DJB'></small><noframes id='z5DJB'>

                      <tfoot id='z5DJB'></tfoot>