Mysql
 sql >> Datenbank >  >> RDS >> Mysql

JSON und laden Sie das Bild auf den Server hoch

In meinem Ansatz habe ich org.apache.http.entity.mime.MultipartEntity verwendet und den Namen der Bilddatei als FileBody

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

Übergeben Sie dann die MultiPartEntity an HttpPost. Ich habe keinen vollständigen Code gepostet, da es viele Kommentare und Code gibt, die nichts mit Ihrer Frage zu tun haben. Indem das Bild als FileBody übergeben wird, ist es möglich, das Bild mit Stand-PHP-Dateibehandlungscode zu erhalten (siehe unten).

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

Für meinen Zweck befand sich der obige Code in einer Schleife, da ich mit mehreren Bildern zu tun hatte

$im = 'image_' . $i;

bezieht sich auf den Namen des Bildes in der Entität.

Sorry für den kurzen Beitrag, ich bin in Eile.

Ich habe vergessen zu erwähnen, warum ich den Base64-String-Ansatz nicht verwendet habe, weil er die Größe des Bildes begrenzt, das Sie senden können. Der FileBody-Ansatz in der Entität war der beste Ansatz, den ich gefunden habe.

Sie können Strings übergeben mit:

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