Heim > Backend-Entwicklung > PHP-Tutorial > Wie lade ich Dateien mit der HttpClient-Bibliothek von Java korrekt auf einen PHP-Server hoch?

Wie lade ich Dateien mit der HttpClient-Bibliothek von Java korrekt auf einen PHP-Server hoch?

DDD
Freigeben: 2024-12-11 17:37:11
Original
595 Leute haben es durchsucht

How to Correctly Upload Files Using Java's HttpClient Library to a PHP Server?

So laden Sie eine Datei mithilfe der Java HttpClient-Bibliothek mit PHP hoch

Problem:

A Eine Java-Anwendung, die die HttpClient-Bibliothek Version 4.0 Beta2 verwendet, versucht, eine Datei auf einen Apache-Server hochzuladen, auf dem PHP ausgeführt wird, die Datei wird jedoch nicht erkannt durch das PHP-Skript.

Lösung:

Der ursprüngliche Java-Code verwendete ein FileEntity-Objekt zum Übertragen der Datei, was falsch ist. Der richtige Ansatz besteht darin, eine MultipartEntity zu verwenden, um die Datei als Multipart-/Formulardatenanforderung zu kapseln.

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

Durch die Einbeziehung dieser Änderungen sollte die Datei-Upload-Funktionalität wie vorgesehen funktionieren und die Datei wird erfolgreich sein vom PHP-Skript erkannt.

Das obige ist der detaillierte Inhalt vonWie lade ich Dateien mit der HttpClient-Bibliothek von Java korrekt auf einen PHP-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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage