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

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

Mary-Kate Olsen
Freigeben: 2024-12-19 15:44:10
Original
549 Leute haben es durchsucht

Why is my Java HttpClient file upload to a PHP server failing, and how can I fix it using MultipartEntity?

Hochladen einer Datei über Javas HttpClient mit PHP

Bei dem Versuch, eine Datei von Java auf einen Apache-Server mit PHP hochzuladen, wurde eine Java-Anwendung erstellt, die Jakarta nutzt HttpClient-Bibliothek Version 4.0 Beta2. Allerdings erkannte das PHP-Skript die hochgeladene Datei nicht, was zu einem leeren $_FILES-Array führte.

Java-Implementierung

Der ursprüngliche Java-Code war falsch, wie aus der geänderten Version unten hervorgeht:

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

Der Hauptunterschied liegt in der Verwendung von MultipartEntity, das die ordnungsgemäße Handhabung von Dateien ermöglicht Uploads.

PHP-Skript

Das PHP-Skript bleibt unverändert:

<?php
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
  echo "File ". $_FILES['userfile']['name'] ." uploaded successfully.\n";
  move_uploaded_file ($_FILES['userfile'] ['tmp_name'], $_FILES['userfile'] ['name']);
} else {
  echo "Possible file upload attack: ";
  echo "filename '". $_FILES['userfile']['tmp_name'] . "'.";
  print_r($_FILES);
}
?>
Nach dem Login kopieren

Fazit

Durch die Verwendung von MultipartEntity im Java-Code wird das Problem der Das Problem, dass das PHP-Skript die hochgeladene Datei nicht erkennen konnte, wurde behoben und die Datei konnte erfolgreich übertragen und auf dem Server verarbeitet werden.

Das obige ist der detaillierte Inhalt vonWarum schlägt das Hochladen meiner Java HttpClient-Datei auf einen PHP-Server 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