"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que o upload do meu arquivo Java HttpClient para um servidor PHP está falhando e como posso corrigir isso usando MultipartEntity?

Por que o upload do meu arquivo Java HttpClient para um servidor PHP está falhando e como posso corrigir isso usando MultipartEntity?

Publicado em 23/12/2024
Navegar:385

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

Fazendo upload de um arquivo via HttpClient Java com PHP

Em uma tentativa de fazer upload de um arquivo de Java para um servidor Apache utilizando PHP, um aplicativo Java foi criado aproveitando o Jakarta Biblioteca HttpClient versão 4.0 beta2. No entanto, o script PHP não conseguiu reconhecer o arquivo enviado, resultando em um array $_FILES vazio.

Implementação Java

O código Java inicial estava incorreto, como fica evidente na versão modificada abaixo:

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

A principal diferença está na utilização de MultipartEntity, que permite o tratamento adequado de uploads de arquivos.

PHP Script

O script PHP permanece inalterado:

Conclusão

Ao empregar MultipartEntity no código Java, o problema da falha do script PHP em detectar o arquivo carregado foi resolvido e o arquivo pôde ser transferido e processado com sucesso no servidor .

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3