Tôi đang viết một API RESTful. Tôi gặp sự cố khi tải lên hình ảnh bằng các động từ khác nhau.Yêu cầu PUT của dữ liệu nhiều phần PHP?
xem xét:
tôi có một đối tượng có thể được tạo/chỉnh sửa/xóa/xem qua một bài/đặt/xóa/được yêu cầu đến một URL. Yêu cầu là hình thức đa phần khi có tệp để tải lên hoặc ứng dụng/xml khi chỉ có văn bản để xử lý.
Để xử lý các tải lên hình ảnh đó có liên quan đến đối tượng tôi đang làm một cái gì đó như:
if(isset($_FILES['userfile'])) {
$data = $this->image_model->upload_image();
if($data['error']){
$this->response(array('error' => $error['error']));
}
$xml_data = (array)simplexml_load_string(urldecode($_POST['xml']));
$object = (array)$xml_data['object'];
} else {
$object = $this->body('object');
}
Vấn đề chính ở đây là khi cố gắng xử lý một yêu cầu đặt, rõ ràng là $ _POST không chứa đặt dữ liệu (theo như tôi có thể nói!).
Để tham khảo đây là cách tôi đang xây dựng các yêu cầu:
curl -F [email protected]/image.png -F xml="<xml><object>stuff to edit</object></xml>"
http://example.com/object -X PUT
Có ai có bất kỳ ý tưởng làm thế nào tôi có thể truy cập các biến xml
trong yêu cầu PUT của tôi?
Cảm ơn, điều đó sẽ hữu ích hơn :) – Josh
"Trước hết, $ _FILES không được điền khi xử lý yêu cầu PUT. Nó chỉ được điền bởi PHP khi xử lý yêu cầu POST". Không thể tìm thấy tài liệu về điều này, bạn có thể vui lòng chỉ cho tôi đúng hướng không? – WDRust
@ M.Ang .: [Ở đây] (http://php.net/manual/en/features.file-upload.post-method.php): "PHP cũng hỗ trợ tải lên tệp phương thức PUT như được sử dụng bởi trình soạn thảo Netscape Composer và máy khách Amaya của W3C. Xem [Hỗ trợ phương pháp PUT] (http://php.net/manual/en/features.file-upload.put- method.php) để biết thêm chi tiết. " – netcoder