Rumah >Java >javaTutorial >Bagaimana untuk Memuat naik Fail dengan betul dari Java HttpClient ke Pelayan PHP?

Bagaimana untuk Memuat naik Fail dengan betul dari Java HttpClient ke Pelayan PHP?

Susan Sarandon
Susan Sarandonasal
2024-12-01 17:30:12236semak imbas

How to Correctly Upload Files from Java HttpClient to a PHP Server?

Java HttpClient dengan Muat Naik Fail PHP

Dalam artikel ini, kami meneroka cara menggunakan perpustakaan Java HttpClient versi 4.0 beta2 untuk memuat naik fail ke pelayan Apache yang menjalankan PHP.

Senario dan Isu

Pemaju bertujuan untuk memindahkan fail dari Java ke PHP melalui perpustakaan HttpClient Jakarta. Walau bagaimanapun, apabila melaksanakan permintaan, pelayan PHP tidak mengesan fail yang dimuat naik. Fungsi is_uploaded_file() mengembalikan palsu, dan pembolehubah $_FILES kekal kosong.

Penyelesaian

Untuk membetulkannya, kita perlu menyemak semula kod Java. Masalahnya berpunca daripada penggunaan FileEntity yang salah. Berikut ialah kod yang diperbetulkan:

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

Perubahan utama ialah menggunakan MultipartEntity dan bukannya FileEntity. Ini membolehkan kami menghantar fail sebagai permintaan data borang berbilang bahagian, iaitu format yang dijangkakan untuk muat naik fail PHP.

Atas ialah kandungan terperinci Bagaimana untuk Memuat naik Fail dengan betul dari Java HttpClient ke Pelayan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn