Mysql
 sql >> Base de données >  >> RDS >> Mysql

JSON et télécharger l'image sur le serveur

Dans mon approche, j'ai utilisé org.apache.http.entity.mime.MultipartEntity et ajouté le nom du fichier image en tant que FileBody

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

puis passez le MultiPartEntity au HttpPost. Je n'ai pas posté de code complet car il contient de nombreux commentaires et du code sans rapport avec votre question. En passant l'image en tant que FileBody, il est possible d'obtenir l'image en utilisant le code de gestion de fichiers stand php (voir ci-dessous).

  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;
          }

Pour mon but, le code ci-dessus était dans une boucle car je traitais plusieurs images

$im = 'image_' . $i;

fait référence au nom de l'image dans l'entité.

Désolé pour le post court je suis pressé par le temps.

J'ai oublié de mentionner la raison pour laquelle je n'ai pas utilisé l'approche de chaîne Base64, c'est qu'elle limite la taille de l'image que vous pouvez envoyer. L'approche FileBody dans l'entité était la meilleure approche que j'ai trouvée.

Vous pouvez passer des chaînes en utilisant :

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);