Maison > Java > javaDidacticiel > Comment réussir à télécharger un fichier de Java vers un serveur Apache à l'aide de Jakarta HttpClient ?

Comment réussir à télécharger un fichier de Java vers un serveur Apache à l'aide de Jakarta HttpClient ?

Patricia Arquette
Libérer: 2024-12-03 14:46:09
original
368 Les gens l'ont consulté

How to Successfully Upload a File from Java to an Apache Server Using Jakarta HttpClient?

Téléchargement d'un fichier sur un serveur Apache avec PHP à l'aide de Jakarta HttpClient

Dans cet article, nous explorerons un scénario courant : le téléchargement d'un depuis une application Java vers un serveur Apache exécutant PHP. Nous utiliserons la bibliothèque Jakarta HttpClient version 4.0 beta2 pour faciliter le transfert de fichiers.

Problème :

Un développeur a rencontré un problème en essayant de télécharger un fichier à l'aide de HttpClient 4.0. bêta2. Malgré une communication réussie avec le serveur, la méthode is_uploaded_file a renvoyé false et la variable $_FILES est restée vide, indiquant que PHP n'a pas reçu le fichier.

Solution :

Le code Java incorrect utilisé précédemment a été remplacé par une version corrigée ci-dessous :

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();
  }
}
Copier après la connexion

Explication :

L'erreur d'origine a été provoquée par l'utilisation d'une FileEntity pour le téléchargement de fichiers, ce qui n'était pas la méthode appropriée. Le code mis à jour utilise une MultipartEntity pour créer une requête HTTP multipart/form-data, qui suit le protocole standard pour les téléchargements de fichiers. En utilisant le format de demande correct, le serveur peut désormais recevoir et traiter avec succès le fichier téléchargé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal