Rumah > pembangunan bahagian belakang > tutorial php > Mengapakah fail Java HttpClient saya dimuat naik ke pelayan PHP gagal, dan bagaimana saya boleh membetulkannya menggunakan MultipartEntity?

Mengapakah fail Java HttpClient saya dimuat naik ke pelayan PHP gagal, dan bagaimana saya boleh membetulkannya menggunakan MultipartEntity?

Mary-Kate Olsen
Lepaskan: 2024-12-19 15:44:10
asal
549 orang telah melayarinya

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

Memuat naik Fail melalui HttpClient Java dengan PHP

Dalam percubaan untuk memuat naik fail dari Java ke pelayan Apache menggunakan PHP, aplikasi Java telah dicipta dengan memanfaatkan Jakarta Pustaka HttpClient versi 4.0 beta2. Walau bagaimanapun, skrip PHP gagal mengecam fail yang dimuat naik, mengakibatkan tatasusunan $_FILES kosong.

Pelaksanaan Java

Kod Java awal tidak betul, seperti yang terbukti daripada versi yang diubah suai di bawah:

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();
  }
}
Salin selepas log masuk

Perbezaan utama terletak pada penggunaan MultipartEntity, yang membolehkan pengendalian fail yang betul muat naik.

Skrip PHP

Skrip PHP kekal tidak berubah:

<?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);
}
?>
Salin selepas log masuk

Kesimpulan

Dengan menggunakan MultipartEntity dalam kod Java, isu Skrip PHP yang gagal mengesan fail yang dimuat naik telah diselesaikan, dan fail itu boleh berjaya dipindahkan dan diproses pada pelayan.

Atas ialah kandungan terperinci Mengapakah fail Java HttpClient saya dimuat naik ke pelayan PHP gagal, dan bagaimana saya boleh membetulkannya menggunakan MultipartEntity?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan