Mysql
 sql >> Database >  >> RDS >> Mysql

JSON e carica l'immagine sul server

Nel mio approccio ho usato org.apache.http.entity.mime.MultipartEntity e ho aggiunto il nome del file immagine come FileBody

entity.addPart("image_" + photo_count, new FileBody(
                        new File(failed.getFilenames()[i])));

quindi passare MultiPartEntity a HttpPost. Non ho pubblicato il codice completo poiché ha un sacco di commenti e codice non correlato alla tua domanda. Passando l'immagine come FileBody è possibile ottenere l'immagine utilizzando il codice di gestione del file stand php (vedi sotto).

  if ((!empty($_FILES[$im])) && ($_FILES[$im]['error'] == 0)) {
              $newname = dirname(__FILE__) . '/../photo/' . $campaign . '/' . $fn;
              if (!file_exists($newname)) {
                  if (move_uploaded_file($_FILES[$im]['tmp_name'], $newname)) {
                      //$resp = "The file " . $fn . " has been uploaded";
                      //printf("%s", $resp);
                  } else {
                    $error = $error + 1;      
                  } 
              }else{
                //image file already exists
                $error = $error + 1;
              }
          } else {
              $error = $error +1;
          }

Per il mio scopo, il codice sopra era in un ciclo poiché avevo a che fare con più immagini

$im = 'image_' . $i;

fa riferimento al nome dell'immagine nell'entità.

Scusa per il breve post, ho fretta.

Ho dimenticato di menzionare il motivo per cui non ho utilizzato l'approccio di stringa Base64 è che limita le dimensioni dell'immagine che puoi inviare. L'approccio FileBody nell'entità è stato l'approccio migliore che ho trovato.

Puoi passare le stringhe usando:

entity.addPart("address", new StringBody(failed[0].getAddress()));

HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 20000); // Timeout

MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
entity.addPart("address", new StringBody("my address example"));
entity.addPart("image_0", new FileBody(new File("filename of image")));

HttpPost post = new HttpPost("server address");
post.setEntity(entity);

HttpResponse response  = client.execute(post);