Télécharger la vidéo d'Android vers le serveur?

Quelqu'un suggère-t-il un exemple pour télécharger une vidéo de la carte SD vers un serveur distant?

  • Comment créer une application de réseau social sur Android
  • L'émulateur de studio Android ne parvient pas à démarrer avec le message d'erreur associé à la limite de mémoire
  • Android Bitmap rapide
  • Android.util.AndroidRuntimeException: Vous ne pouvez pas combiner le renvoi de balayage et la barre d'action
  • Le couplage Bluetooth "hors bande" (OOB) sur Android?
  • Streaming Library VLC Android
  • 3 Solutions collect form web for “Télécharger la vidéo d'Android vers le serveur?”

    A eu le même problème il y a quelque temps. Voici un code.

    public static int upLoad2Server(String sourceFileUri) { String upLoadServerUri = "your remote server link"; // String [] string = sourceFileUri; String fileName = sourceFileUri; HttpURLConnection conn = null; DataOutputStream dos = null; DataInputStream inStream = null; String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 1 * 1024 * 1024; String responseFromServer = ""; File sourceFile = new File(sourceFileUri); if (!sourceFile.isFile()) { Log.e("Huzza", "Source File Does not exist"); return 0; } try { // open a URL connection to the Servlet FileInputStream fileInputStream = new FileInputStream(sourceFile); URL url = new URL(upLoadServerUri); conn = (HttpURLConnection) url.openConnection(); // Open a HTTP connection to the URL conn.setDoInput(true); // Allow Inputs conn.setDoOutput(true); // Allow Outputs conn.setUseCaches(false); // Don't use a Cached Copy conn.setRequestMethod("POST"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("ENCTYPE", "multipart/form-data"); conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); conn.setRequestProperty("uploaded_file", fileName); dos = new DataOutputStream(conn.getOutputStream()); dos.writeBytes(twoHyphens + boundary + lineEnd); dos.writeBytes("Content-Disposition: form-data; name=\"uploaded_file\";filename=\""+ fileName + "\"" + lineEnd); dos.writeBytes(lineEnd); bytesAvailable = fileInputStream.available(); // create a buffer of maximum size Log.i("Huzza", "Initial .available : " + bytesAvailable); bufferSize = Math.min(bytesAvailable, maxBufferSize); buffer = new byte[bufferSize]; // read file and write it into form... bytesRead = fileInputStream.read(buffer, 0, bufferSize); while (bytesRead > 0) { dos.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read(buffer, 0, bufferSize); } // send multipart form data necesssary after file data... dos.writeBytes(lineEnd); dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); // Responses from the server (code and message) serverResponseCode = conn.getResponseCode(); String serverResponseMessage = conn.getResponseMessage(); Log.i("Upload file to server", "HTTP Response is : " + serverResponseMessage + ": " + serverResponseCode); // close streams Log.i("Upload file to server", fileName + " File is written"); fileInputStream.close(); dos.flush(); dos.close(); } catch (MalformedURLException ex) { ex.printStackTrace(); Log.e("Upload file to server", "error: " + ex.getMessage(), ex); } catch (Exception e) { e.printStackTrace(); } //this block will give the response of upload link try { BufferedReader rd = new BufferedReader(new InputStreamReader(conn .getInputStream())); String line; while ((line = rd.readLine()) != null) { Log.i("Huzza", "RES Message: " + line); } rd.close(); } catch (IOException ioex) { Log.e("Huzza", "error: " + ioex.getMessage(), ioex); } return serverResponseCode; // like 200 (Ok) } // end upLoad2Server 

    2) appelez-le avec

     int reponse=upLoad2Server(""+filepath); 

    Solution en deux étapes:

    1) Sélectionnez le fichier vidéo de la galerie.

    Créer un int int global int intentionnel private static final int SELECT_VIDEO = 3; – Peu importe le numéro que vous utilisez, pour autant que l'on vérifie plus tard. Ensuite, utilisez l'intention de sélectionner une vidéo.

     Intent intent = new Intent(); intent.setType("video/*"); intent.setAction(Intent.ACTION_GET_CONTENT); startActivityForResult(Intent.createChooser(intent,"Select a Video "), SELECT_VIDEO); 

    Utilisez onActivityResult () pour lancer la méthode uploadVideo ().

     public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == SELECT_VIDEO) { System.out.println("SELECT_VIDEO"); Uri selectedImageUri = data.getData(); selectedPath = getPath(selectedImageUri); System.out.println("SELECT_VIDEO Path : " + selectedPath); uploadVideo(selectedPath); } 

    2) Passez à http://hc.apache.org/downloads.cgi , téléchargez le dernier flac HttpClient, ajoutez-le à votre projet et téléchargez la vidéo en utilisant la méthode suivante:

     private void uploadVideo(String videoPath) throws ParseException, IOException { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(YOUR_URL); FileBody filebodyVideo = new FileBody(new File(videoPath)); StringBody title = new StringBody("Filename: " + videoPath); StringBody description = new StringBody("This is a video of the agent"); StringBody code = new StringBody(realtorCodeStr); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("videoFile", filebodyVideo); reqEntity.addPart("title", title); reqEntity.addPart("description", description); reqEntity.addPart("code", code); httppost.setEntity(reqEntity); // DEBUG System.out.println( "executing request " + httppost.getRequestLine( ) ); HttpResponse response = httpclient.execute( httppost ); HttpEntity resEntity = response.getEntity( ); // DEBUG System.out.println( response.getStatusLine( ) ); if (resEntity != null) { System.out.println( EntityUtils.toString( resEntity ) ); } // end if if (resEntity != null) { resEntity.consumeContent( ); } // end if httpclient.getConnectionManager( ).shutdown( ); } // end of uploadVideo( ) 

    Une fois que vous l'avez fonctionné, vous voudrez probablement le mettre dans un fil et ajouter une boîte de dialogue de téléchargement, mais cela vous permettra de démarrer. Travaillant pour moi après avoir essayé sans succès la méthode upload2Server (). Cela fonctionnera également pour les images et l'audio avec quelques ajustements mineurs.

    Ce sont les variables globales à définir en premier:

     private String mString; private Uri image_uri; private String response; private HttpURLConnection conn = null; private DataOutputStream dos = null; private String lineEnd = "\r\n"; private String twoHyphens = "--"; private String boundary = "*****"; private int bytesRead, bytesAvailable, bufferSize; private byte[] buffer; private String url_for_image_upload = "your_web_api_put_here"; private int maxBufferSize = 1 * 1024 * 1024; 

    // puis appelez ces deux méthodes sur la méthode onclick () du bouton

     mString = getRealPathFromURI(image_uri); ImageUpload(); 

    // et écrivez ces méthodes comme suit

     private void ImageUpload() { Toast.makeText(getApplicationContext(), "Please Wait while uploading Image", Toast.LENGTH_SHORT).show(); try { FileInputStream fileInputStream = new FileInputStream(new File(mString)); URL url = new URL(url_for_image_upload); conn = (HttpURLConnection) url.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); conn.setRequestMethod("POST"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); dos = new DataOutputStream(conn.getOutputStream()); dos.writeBytes(twoHyphens + boundary + lineEnd); dos.writeBytes("Content-Disposition: form-data; name=\"img_name\";filename=\"img_name" + "\"" + lineEnd); dos.writeBytes(lineEnd); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); buffer = new byte[bufferSize]; bytesRead = fileInputStream.read(buffer, 0, bufferSize); while (bytesRead > 0) { dos.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); bufferSize = Math.min(bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read(buffer, 0, bufferSize); } dos.writeBytes(lineEnd); dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); BufferedReader in = new BufferedReader(new InputStreamReader( conn.getInputStream())); Log.d("BuffrerReader", "" + in); if (in != null) { response = convertStreamToString(in); Log.e("FINAL_RESPONSE-LENGTH",""+response.length()); Log.e("FINAL_RESPONSE", response); } fileInputStream.close(); dos.flush(); dos.close(); if (response.startsWith("0")) { Toast.makeText(getApplicationContext(), "Image Uploaded not successfully", Toast.LENGTH_SHORT) .show(); } else { Toast.makeText(getApplicationContext(), "Image Uploaded successfully", Toast.LENGTH_SHORT) .show(); } } catch (MalformedURLException ex) { Log.e("Image upload", "error: " + ex.getMessage(), ex); } catch (IOException ioe) { Log.e("Image upload", "error: " + ioe.getMessage(), ioe); } } public String getRealPathFromURI(Uri contentUri) { String[] proj = { MediaColumns.DATA }; @SuppressWarnings("deprecation") Cursor cursor = managedQuery(contentUri, proj, null, null, null); int column_index = cursor .getColumnIndexOrThrow(MediaColumns.DATA); cursor.moveToFirst(); mString = cursor.getString(column_index); return mString; } public static String convertStreamToString(BufferedReader is) throws IOException { if (is != null) { StringBuilder sb = new StringBuilder(); String line; try { while ((line = is.readLine()) != null) { sb.append(line).append(""); } } finally { is.close(); } return sb.toString(); } else { return ""; } } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.