Android: carica file di grandi size con MultipartEntity

In base a questa risposta "Android carica video su server remoto utilizzando dati di module multipart HTTP" Faccio tutti i passaggi.

Ma non so come codice per il lato server! Intendo una semplice pagina PHP che serve il mio più fedele upload.

E un'altra domanda è: YOUR_URL (terza row del seguente snippet) deve essere l'indirizzo di quella pagina PHP?

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 description of the video"); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("videoFile", filebodyVideo); reqEntity.addPart("title", title); reqEntity.addPart("description", description); 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( ); } 

Questo codice ha funzionato correttamente e il codice PHP che dovrei usare è semplice come questo:

 <?php $file_path = "uploads/"; $file_path = $file_path . basename( $_FILES['videoFile']['name']); if(move_uploaded_file($_FILES['videoFile']['tmp_name'], $file_path)) { echo "success"; } else{ echo "upload_fail_php_file"; } ?> 

NOTA che videoFile deve corrispondere esattamente a

reqEntity.addPart("videoFile", filebodyVideo);

E il problema più importnte che probabilmente dovresti affrontare è il valore predefinito di post_max_size e upload_max_filesize nella configuration del server! Poiché il valore predefinito è troppo piccolo e quando si tenta di caricare file di grandi size, lo script PHP restituisce "upload_fail_php_file" senza errori o lanci di eccezioni. Quindi ricorda di impostare questi valori tanto grandi quanto basta …

Goditi la programmazione.