2016-12-19 9 views
1

私はアンドロイドに近親相姦しています。最後の数日私はサーバーに画像を送るためにいくつかの問題に直面しています。私は単純にいくつかのテキストフィールドとライブラリから取られる画像を含むフォームを持っています。画像のアップロードを除いて、すべてが完璧に動作しています。私はgoogleにチュートリアルのほとんどを試しました。主な問題は、logcatはエラーを表示していません。実際に間違っていた。 これは私が、私はこれは私を受け取るために私のコードであるサーバーにアンドロイドはサーバーに画像をアップロードできません

public String getPath(Uri uri) { 
     Cursor cursor = getContentResolver().query(uri, null, null, null, null); 
     cursor.moveToFirst(); 
     String document_id = cursor.getString(0); 
     document_id = document_id.substring(document_id.lastIndexOf(":") + 1); 
     cursor.close(); 

     cursor = getContentResolver().query(
       android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
       null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null); 
     cursor.moveToFirst(); 
     String path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)); 
     cursor.close(); 

     return path; 
    } 


public void uploadMultipart() { 
     //getting the actual path of the image 
     String path = getPath(filePath); 

     //Uploading code 
     try { 
      String uploadId = UUID.randomUUID().toString(); 

      //Creating a multi part request 
      new MultipartUploadRequest(this, uploadId, UPLOAD_URL) 
        .addFileToUpload(path, "image") //Adding file 
        .setNotificationConfig(new UploadNotificationConfig()) 
        .setMaxRetries(2) 
        .startUpload(); //Starting the upload 

     } catch (Exception exc) { 
      Toast.makeText(this, exc.getMessage(), Toast.LENGTH_SHORT).show(); 
     } 
    } 

を選択した画像を送信するには、この機能を書いたgalary

private void showFileChooser() { 
     Intent intent = new Intent(); 
     intent.setType("image/*"); 
     intent.setAction(Intent.ACTION_GET_CONTENT); 
     startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST); 
    } 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) { 
      filePath = data.getData(); 
      try { 
       bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath); 
       schoolLogoUpload.setImageBitmap(bitmap); 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

から画像を取得するには、このコードを使用し、私は

やったことありますサーバー側の画像データ

if(Input::hasFile('image')) { 
      $file = Input::file('image'); 
      $destination_path = "uploads"; 
      $extension = Input::file('image')->getClientOriginalExtension(); 
      $file_name = str_random(20). "." . $extension; 
      Input::file('image')->move($destination_path, $file_name); 
     }else{ 
      return \Response::json([ 
       "error"=>["message"=>"Please select the college logo"] 
      ], 404); 
+0

はありますか? –

+0

また、メソッドに 'exc.printStackTrace()'を追加することもできます。 –

+0

@mad_manny私は、サーバーにデータを送信するボタンの中でその関数を呼び出しています。私を助けることができますか? – therameshbista

答えて

1

私はあなたが変換していると仮定していますイメージをBase64形式に変換します。基本的にBase64フォーマットは、イメージをStringフォーマットに変換(またはイメージエンコード)します。

*以下は

*あなたのためのサーバに画像をアップロードしますAsynctaskを書くAsynctaskさ: -

private class AsyncUploadToServer extends AsyncTask<String, Void, String> 
{ 
    ProgressDialog pdUpload; 

    String imageData = ""; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pdUpload = new ProgressDialog(MainActivity.this); 
     pdUpload.setMessage("Uploading..."); 
     pdUpload.show(); 
    } 

    @Override 
    protected String doInBackground(String... params) 
    { 
     imageData = params[0]; 
     HttpClient httpclient = new DefaultHttpClient(); 

     // URL where data to be uploaded 
     HttpPost httppost = new HttpPost(YOUR_URL_HERE); 

     try 
     { 
      // adding data 
      List<NameValuePair> dataToBeAdd = new ArrayList<>(); 
      dataToBeAdd.add(new BasicNameValuePair("uploadedImage", imageData)); 
      httppost.setEntity(new UrlEncodedFormEntity(dataToBeAdd)); 

      // execute http post request 
      HttpResponse response = httpclient.execute(httppost); 
      Log.i("MainActivity", "Response: " + response); 
     } 
     catch (ClientProtocolException ex) 
     { 
      ex.printStackTrace(); 
     } 
     catch (IOException ioe) 
     { 
      ioe.printStackTrace(); 
     } 
     return ""; 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     super.onPostExecute(s); 
     pdUpload.dismiss(); 
     Toast.makeText(getApplicationContext(), "Image Uploaded Successfully..!!", Toast.LENGTH_SHORT).show(); 
    } 
} 

が、これはあなたを助けることを願っています。 :-)

P.S.:-あなたはasynctaskについてあまり知らない場合は、ここにあなたが `)(` uploadMultipartを呼び出しているリンクhttps://developer.android.com/reference/android/os/AsyncTask.html

+0

ここで私はこのコードを追加する必要があります。私はこれで私の上記のコードを置き換える必要がありますか、これは私に画像をserver.Please助けてくださいアップロードすることができます完全なコードです – therameshbista

+0

ええ、これであなたのコードを置き換えることができます。ボタンクリックイベントでこのasynctaskを呼び出さなければなりません。 – itzswan

+0

ボタンの中でどのようにクラスを呼び出すのだろうか?次は、選択した画像が上記の推奨クラスにどのように接続されているかです。 – therameshbista

関連する問題