Heim > Backend-Entwicklung > PHP-Tutorial > Warum schlägt das Hochladen meiner Java HttpClient-Datei in PHP fehl und wie kann ich das Problem mit MultipartEntity beheben?

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

Mary-Kate Olsen
Freigeben: 2024-12-09 17:52:10
Original
186 Leute haben es durchsucht

Why Does My Java HttpClient File Upload to PHP Fail, and How Can I Fix It Using MultipartEntity?

Hochladen einer Datei mit Java HttpClient mit PHP

Beim Versuch, eine Datei mit PHP unter Verwendung der Java HttpClient-Bibliothek Version 4.0 auf einen Apache-Server hochzuladen Beta2 tritt ein Problem auf, bei dem das PHP-Skript die von Java hochgeladene Datei nicht erkennt Anwendung.

Im angegebenen Java-Codeausschnitt liegt der Fehler in der Verwendung einer FileEntity zum Kapseln der Dateidaten. Die korrigierte Java-Klasse unten verwendet stattdessen eine MultipartEntity, die für Multipart-/Formulardaten-Uploads unerlässlich ist:

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

Diese Korrektur stellt sicher, dass die Datei ordnungsgemäß hochgeladen wird und die Methode is_uploaded_file() des PHP-Skripts sollte „true“ zurückgeben nach erfolgreicher Dateiübertragung, wie vorgesehen.

Das obige ist der detaillierte Inhalt vonWarum schlägt das Hochladen meiner Java HttpClient-Datei in PHP fehl und wie kann ich das Problem mit MultipartEntity beheben?. 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