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