„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum schlägt das Hochladen meiner Java HttpClient-Datei auf einen PHP-Server fehl und wie kann ich das Problem mit MultipartEntity beheben?

Warum schlägt das Hochladen meiner Java HttpClient-Datei auf einen PHP-Server fehl und wie kann ich das Problem mit MultipartEntity beheben?

Veröffentlicht am 23.12.2024
Durchsuche:940

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

Hochladen einer Datei über Javas HttpClient mit PHP

Bei dem Versuch, eine Datei von Java auf einen Apache-Server mit PHP hochzuladen, wurde eine Java-Anwendung erstellt, die Jakarta nutzt HttpClient-Bibliothek Version 4.0 Beta2. Allerdings erkannte das PHP-Skript die hochgeladene Datei nicht, was zu einem leeren $_FILES-Array führte.

Java-Implementierung

Der ursprüngliche Java-Code war falsch, wie aus der geänderten Version unten hervorgeht:

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

Der wesentliche Unterschied liegt in der Verwendung von MultipartEntity, das die ordnungsgemäße Handhabung von Datei-Uploads ermöglicht.

PHP-Skript

Das PHP-Skript bleibt unverändert:

Fazit

Durch die Verwendung von MultipartEntity im Java-Code wurde das Problem behoben, dass das PHP-Skript die hochgeladene Datei nicht erkennen konnte, und die Datei konnte erfolgreich auf den Server übertragen und verarbeitet werden .

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3