"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué falla la carga de mi archivo Java HttpClient en un servidor PHP y cómo puedo solucionarlo usando MultipartEntity?

¿Por qué falla la carga de mi archivo Java HttpClient en un servidor PHP y cómo puedo solucionarlo usando MultipartEntity?

Publicado el 2024-12-23
Navegar:743

Why is my Java HttpClient file upload to a PHP server failing, and how can I fix it using MultipartEntity?

Cargar un archivo a través de HttpClient de Java con PHP

En un intento de cargar un archivo desde Java a un servidor Apache utilizando PHP, se creó una aplicación Java aprovechando el software Jakarta. Biblioteca HttpClient versión 4.0 beta2. Sin embargo, el script PHP no reconocía el archivo cargado, lo que generaba una matriz $_FILES vacía.

Implementación de Java

El código Java inicial era incorrecto, como se desprende de la versión modificada a continuación:

import java.io.File;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.HttpVersion;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.ContentBody;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreProtocolPNames;
import org.apache.http.util.EntityUtils;

public class PostFile {
  public static void main(String[] args) throws Exception {
    HttpClient httpclient = new DefaultHttpClient();
    httpclient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);

    HttpPost httppost = new HttpPost("http://localhost:9001/upload.php");
    File file = new File("c:/TRASH/zaba_1.jpg");

    MultipartEntity mpEntity = new MultipartEntity();
    ContentBody cbFile = new FileBody(file, "image/jpeg");
    mpEntity.addPart("userfile", cbFile);

    httppost.setEntity(mpEntity);
    System.out.println("executing request "   httppost.getRequestLine());
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity resEntity = response.getEntity();

    System.out.println(response.getStatusLine());
    if (resEntity != null) {
      System.out.println(EntityUtils.toString(resEntity));
    }
    if (resEntity != null) {
      resEntity.consumeContent();
    }

    httpclient.getConnectionManager().shutdown();
  }
}

La diferencia clave radica en la utilización de MultipartEntity, que permite el manejo adecuado de la carga de archivos.

Script PHP

El script PHP permanece sin cambios:

Conclusión

Al emplear MultipartEntity en el código Java, se resolvió el problema del script PHP que no detectaba el archivo cargado y el archivo se pudo transferir y procesar exitosamente en el servidor. .

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3