2017-08-03 1 views
0

Salut je travaille sur une application de chat et maintenant je veux intégrer partager l'image audio vidéo PDF de mon application. et j'utilise ce code mais il ne fonctionne pas correctement. Est-ce que quelqu'un a une idée de comment envoyer ces fichiers en utilisant volley ou retrofit. Entendre est ce que j'ai essayé.Comment télécharger des fichiers comme l'audio vidéo PDF image de fichier texte doc d'Android au serveur php

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("*/*"); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 

    try { 
     startActivityForResult(
       Intent.createChooser(intent, "Select a File to Upload"), 
       FILE_SELECT_CODE); 
    } catch (android.content.ActivityNotFoundException ex) { 
     // Potentially direct the user to the Market with a Dialog 
     Toast.makeText(this, "Please install a File Manager.", 
       Toast.LENGTH_SHORT).show(); 
    } 

Et ceci est ma méthode onActivityResult.

 @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent 
    data) { 
    switch (requestCode) { 
     case FILE_SELECT_CODE: 
      if (resultCode == RESULT_OK) { 
     Uri uri = data.getData(); 
       ContentResolver cr = this.getContentResolver(); 
       mime = cr.getType(uri); 
       Toast.makeText(ChatActivity.this,mime,Toast.LENGTH_LONG).show(); 
       Log.d(TAG, "File Uri: " + uri.toString()+" "+mime); 
       // Get the path 

       if(mime.equalsIgnoreCase("image/jpeg")){ 
        try { 
         bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri); 
         uploadImage(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       }else{ 

        ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
        FileInputStream fis; 
        try { 
         fis = new FileInputStream(new File(uri.getPath())); 
         byte[] buf = new byte[1024]; 
         int n; 
         while (-1 != (n = fis.read(buf))) 
          baos.write(buf, 0, n); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
        filebytes = baos.toByteArray(); 
        uploadImage(); 

       } 

      } 
      break; 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
} 

Et ceci est ma méthode de téléchargement.

 private void uploadImage(){ 

    StringRequest stringRequest = new StringRequest(Request.Method.POST, 
    UPLOAD_URL, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String s) { 
        //Disimissing the progress dialog 
        loading.dismiss(); 
        //Showing toast message of the response 
        try { 
         JSONObject jsonObject = new JSONObject(s); 
         String message = jsonObject.getString("result"); 
         sendfileMessage(message); 

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


        Log.d("image path",s); 

       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError volleyError) { 
        //Dismissing the progress dialog 
        loading.dismiss(); 


       } 
      }){ 
     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 
      //Converting Bitmap to String 




      Map<String,String> params = new Hashtable<String, String>(); 

      //Adding parameters 
      params.put("mkey", "R09fQ2hhdC0z"); 


      if(mime.equalsIgnoreCase("image/jpeg")){ 
       String image = getStringImage(bitmap); 
       params.put("ch_img", image); 
      }else{ 
       String image = new String(filebytes); 
       params.put("ch_img", image); 
      } 
      //returning parameters 
      Log.d("imagedemo",params.toString()); 
      return params; 
     } 
    }; 

    //Creating a Request Queue 
    RequestQueue requestQueue = Volley.newRequestQueue(this); 

    //Adding request to the queue 
    requestQueue.add(stringRequest); 
} 
+0

double possible de [Télécharger doc, pdf, xls etc, de l'application Android au serveur php] (https://stackoverflow.com/questions/33820723/upload-doc-pdf-xls-etc -from-android-application-to-php-server) – SripadRaj

+0

@SripadRas est-ce le travail pour la vidéo et l'audio aussi –

+0

Je suppose que cela devrait fonctionner. – SripadRaj

Répondre

0

Vous pouvez télécharger des fichiers dans API avec Mutipart Data.

Créer une interface si vous utilisez Retrofit comme -

@Multipart 
@POST("updateProfile") 
Call<JsonObject> uploadFile(@Part MultipartBody.Part file); 

Ensuite, créez Mutipart données:

private MultipartBody.Part getFilePart(String filePath) { 

    File fileToUpload=new File(filePath); 

    return MultipartBody.Part.createFormData("file", fileToUpload.getName(),fileToUpload); 
    } 

Enfin il suffit d'appeler l'API

retrofitObject.uploadFile(getFilePart("filePath").enqueue(this); 
+0

donc nous avons besoin seulement de chemin de fichier pour télécharger vidéo pdf etc. –

+0

Oui seulement chemin. Mais votre api doit consommer des données Mutipart. –

+0

après avoir cherché le nombre de jours trou obtiennent une meilleure façon de le faire. Pouvez-vous s'il vous plaît mettre un bref code. d'onactivityresult. désolé mais je suis resté bloqué. –