Android post Base64 String a PHP

— Soluzione —
Il problema era sul nostro server. Può gestire solo le richieste postali se mettiamo www davanti al nostro nome di dominio. Così è ciò che ha causato i problemi. Sto impostando la prima risposta come la risposta poiché ha funzionato una volta che ho ordinato l'URL fuori.


Domanda originale

  • L'animation Touch Ripple, simile a L-release, sul pre-L
  • Gradle costruisce errori con Android Studio
  • Errore java.lang.RuntimeException: Stub! in Android con test Fitnesse
  • Nascondi tastiera morbida per perdere la messa a fuoco
  • Caricamento sincrono dell'image su un thread di fondo con Picasso - senza .get ()
  • Come posso estendere il filatore per implementare una nuova function?
  • Ho una variabile POST nel mio script PHP è sempre vuota.
    Ho cercato di cambiare il nome della variabile, il contenuto della variabile ecc.

    Il problema deve risiedere nel codice java, perché quando ho var_dump() la richiesta in php, è nullo.

    Questo è il mio scenario:

    Lascio che l'utente schiocca una foto, la foto viene salvata sulla scheda SD e ottengo il path dell'image e poi converto in una string Base64. Vorrei quindi submit questa string base64 a uno script php che lo converte da Base64 e lo scrive come un'image sul disco rigido del mio server come così:

     File f = new File(savedImagePath); Bitmap bitmap = BitmapFactory.decodeFile(f.getPath()); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 30, stream); byte [] byte_arr = stream.toByteArray(); String image_str = Base64.encodeToString(byte_arr, Base64.DEFAULT); HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost("http://myURL/uploadImage.php"); List<NameValuePair> pairs = new ArrayList<NameValuePair>(); pairs.add(new BasicNameValuePair("image", image_str)); post.setEntity(new UrlEncodedFormEntity(pairs)); HttpResponse response = client.execute(post); 

    Alla fine del server, questo è ciò che sembra il mio script PHP:

     <?php $base = $_POST["image"]; $binary=base64_decode($base); header('Content-Type: bitmap; charset=utf-8'); $file = fopen('uploaded_image.jpg', 'w'); fwrite($file, $binary); fclose($file); echo "script done executing"; ?> 

    Questo è un esempio di una string Base64 che sto cercando di submit:

    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

  • Android AlarmManager: C'è un modo per cancellare tutti gli allarmi impostati?
  • Imansible scrivere sulla scheda SD - canWrite restituisce false
  • Distinguere tra Tablet e Smart phone su ICS
  • Come aprire un SMS specifico in android
  • Come posso implementare la ricerca in pagine in listview in android?
  • Android - Matcher.find () infinito
  • 5 Solutions collect form web for “Android post Base64 String a PHP”

    Questo è il codice dell'image:

     ByteArrayOutputStream bao = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 90, bao); byte [] ba = bao.toByteArray(); String ba1=Base64.encodeBytes(ba); ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("image",ba1)); 

    Questo è il codice HTTP per l'invio dell'image al server:

     HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://servername.com/uploadimage.php"); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); 

    Se troverai altre difficoltà, chiedethemes o un assegno:

    • questo tutorial simile per l'upload di immagini
    • Esempio Base64

    Nei cambiamenti di file header di PHP:

     header('Content-Type: image/jpg; charset=utf-8'); $base=$_REQUEST['image']; 

    Hai provato a leggere i dati postali in PHP? Qualcosa di simile a

    $data = $xml = file_get_contents('php://input');

    Date un'occhiata a questo link per ulteriori informazioni

    http://www.codediesel.com/php/reading-raw-post-data-in-php/

    basta scaricare il file Base64.java http://iharder.sourceforge.net/current/java/base64/ e metti quel file nel tuo progetto e poi

      just replace the String image_str = Base64.encodeToString(byte_arr, Base64.DEFAULT); 

    questo con

     String image_str = Base64.encodeBytes(byte_arr); 

    sostituire questo post.setEntity(new UrlEncodedFormEntity(pairs)); con

      post.setEntity(new UrlEncodedFormEntity(pairs,HTTP.UTF_8)); 

    Controllare anche durante l'importzione di Base64 importerà il file dal tuo pacchetto e poi submit al server verrà inviato.

    nel tuo codice PHP cambia

    cambiare questo
    $ base = $ _POST ["image"]; a
    $ base = $ _REQUEST ['image'];

    Prova a submit i tuoi dati come segue:

     HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 60000); //1 min HttpConnectionParams.setSoTimeout(httpParams, 60000); //1 min HttpClient client = new DefaultHttpClient(httpParams); HttpPost post = new HttpPost("http://myURL/uploadImage.php"); List<NameValuePair> pairs = new ArrayList<NameValuePair>(); pairs.add(new BasicNameValuePair("image", image_str)); post.setEntity(new UrlEncodedFormEntity(pairs, HTTP.UTF_8)); // as UTF-8 HttpResponse response = client.execute(post); 

    È il HTTP-Response-Code che stai ricevendo 200? Se è così, provare a impostare questi campi di intestazione:

    "Accetta": "text / html"

    "Accetta-lingua": "en"

    "Lunghezza del contenuto": yourString.length

    "Tipo di contenuto": "application / x-www-form-urlencoded"

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.