sql >> Base de Datos >  >> RDS >> Mysql

JSON y sube la imagen al servidor

En mi enfoque, utilicé org.apache.http.entity.mime.MultipartEntity y agregué el nombre del archivo de imagen como FileBody

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

luego pase MultiPartEntity a HttpPost. No he publicado el código completo ya que tiene muchos comentarios y código no relacionado con su pregunta. Al pasar la imagen como FileBody, es posible obtener la imagen utilizando el código de manejo de archivos php stand (ver más abajo).

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

Para mi propósito, el código anterior estaba en un bucle ya que estaba tratando con varias imágenes

$im = 'image_' . $i;

hace referencia al nombre de la imagen en la entidad.

Perdón por la breve publicación, tengo prisa por el tiempo.

Olvidé mencionar que la razón por la que no utilicé el enfoque de cadena Base64 es que limita el tamaño de la imagen que puede enviar. El enfoque de FileBody en la entidad fue el mejor enfoque que encontré.

Puede pasar cadenas 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);