Heim > Java > javaLernprogramm > Wie lade ich mit Jakarta HttpClient erfolgreich eine Datei von Java auf einen Apache-Server hoch?

Wie lade ich mit Jakarta HttpClient erfolgreich eine Datei von Java auf einen Apache-Server hoch?

Patricia Arquette
Freigeben: 2024-12-03 14:46:09
Original
427 Leute haben es durchsucht

How to Successfully Upload a File from Java to an Apache Server Using Jakarta HttpClient?

Hochladen einer Datei auf einen Apache-Server mit PHP mithilfe von Jakarta HttpClient

In diesem Artikel untersuchen wir ein häufiges Szenario: das Hochladen einer Datei von einer Java-Anwendung auf einen Apache-Server, auf dem PHP ausgeführt wird. Wir verwenden die Jakarta HttpClient-Bibliothek Version 4.0 Beta2, um die Dateiübertragung zu erleichtern.

Problem:

Ein Entwickler ist beim Versuch, eine Datei mit HttpClient 4.0 hochzuladen, auf ein Problem gestoßen Beta2. Trotz erfolgreicher Kommunikation mit dem Server gab die Methode is_uploaded_file false zurück und die Variable $_FILES blieb leer, was darauf hinweist, dass PHP die Datei nicht empfangen hat.

Lösung:

Der zuvor verwendete fehlerhafte Java-Code wurde durch eine korrigierte Version ersetzt unten:

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();
  }
}
Nach dem Login kopieren

Erklärung:

Der ursprüngliche Fehler wurde durch die Verwendung einer FileEntity zum Datei-Upload verursacht, was nicht die geeignete Methode war. Der aktualisierte Code verwendet eine MultipartEntity, um eine Multipart-/Formulardaten-HTTP-Anfrage zu erstellen, die dem Standardprotokoll für Datei-Uploads folgt. Durch die Verwendung des richtigen Anforderungsformats kann der Server nun die hochgeladene Datei erfolgreich empfangen und verarbeiten.

Das obige ist der detaillierte Inhalt vonWie lade ich mit Jakarta HttpClient erfolgreich eine Datei von Java auf einen Apache-Server hoch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage