Heim >Java >javaLernprogramm >Warum schlägt das Hochladen meiner Java HttpClient-Datei nach PHP trotz erfolgreicher Anfrage und Antwort fehl?
Dateien mit Java HttpClient und PHP hochladen
In diesem Szenario versuchen Sie, eine Datei mit PHP unter Verwendung von Java auf Apache hochzuladen HttpClient-Bibliothek Version 4.0 Beta2. Die Methode is_uploaded_file gibt jedoch false zurück und die Variable $_FILES bleibt trotz einer scheinbar erfolgreichen Anfrage und Antwort leer.
Ursache
Der ursprüngliche Java-Code ist falsch. Um dieses Problem zu beheben, verwenden Sie die folgende aktualisierte Klasse:
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 Hauptunterschied besteht in der Verwendung von MultipartEntity. Der ursprünglichen Implementierung fehlte diese wesentliche Komponente, was dazu führte, dass das PHP-Skript die hochgeladene Datei nicht erkennen konnte.
Das obige ist der detaillierte Inhalt vonWarum schlägt das Hochladen meiner Java HttpClient-Datei nach PHP trotz erfolgreicher Anfrage und Antwort fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!