في محاولة لتحميل ملف من Java إلى خادم Apache باستخدام PHP، تم إنشاء تطبيق Java للاستفادة من جاكرتا مكتبة HttpClient الإصدار 4.0 beta2. ومع ذلك، فشل برنامج PHP في التعرف على الملف الذي تم تحميله، مما أدى إلى ظهور مصفوفة $_FILES فارغة.
كود Java الأولي كان غير صحيح، كما هو واضح من النسخة المعدلة أدناه:
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(); } }
يكمن الاختلاف الرئيسي في استخدام MultipartEntity، الذي يتيح المعالجة الصحيحة لتحميلات الملفات.
يظل البرنامج النصي PHP دون تغيير:
من خلال استخدام MultipartEntity في كود Java، تم حل مشكلة فشل البرنامج النصي PHP في اكتشاف الملف الذي تم تحميله، ويمكن نقل الملف ومعالجته بنجاح على الخادم .
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3