PHP에서 멀티파트 POST 데이터 요청 수신
문제
나는 다음을 받고 싶다 HTTP
요청하다 PHP:
Content-type: multipart/form-data;boundary=main_boundary
--main_boundary
Content-type: text/xml
<?xml version='1.0'?>
<content>
Some content goes here
</content>
--main_boundary
Content-type: multipart/mixed;boundary=sub_boundary
--sub_boundary
Content-type: application/octet-stream
File A contents
--sub_boundary
Content-type: application/octet-stream
File B contents
--sub_boundary
--main_boundary--
(메모:이 게시물에서는 더 읽기 쉽도록 하위 부분을 들여쓰기했습니다.)
저는 PHP에 능숙하지 않으며 PHP 코드에서 이러한 종류의 다중 부분 양식 요청을 수신하는 방법을 알아내기 위한 도움말/포인터를 얻고 싶습니다.표준 HTML 양식을 받은 코드를 작성한 후 해당 이름을 인덱스 키로 사용하여 양식 요소에 액세스할 수 있었습니다. $HTTP_GET_VARS
배열이지만 이 경우 양식 요소 이름이 없으며 양식 데이터 부분이 선형이 아닙니다(예:하위 부분 = 다중 레벨 배열).
도움을 주셔서 감사합니다!
/로버트
해결책
$HTTP_GET_VARS
, $HTTP_POST_VARS
, 등.더 이상 사용되지 않는 표기법이므로 사용해야 합니다. $_GET
, $_POST
, 등.
이제 파일 내용은 다음 위치에 있어야 합니다. $_FILES
전역 배열이지만 요소 이름이 없으면 나머지 콘텐츠가 표시되는지 확실하지 않습니다. $_POST
.어쨌든 만약에 always_populate_raw_post_data
설정이 true입니다. php.ini, 데이터는 다음 위치에 있어야 합니다. $HTTP_RAW_POST_DATA
.또한 읽을 때 전체 요청이 표시되어야 합니다. php://입력.
다른 팁
참고해야 할 사항:
“php://input을 사용하면 원시 POST 데이터를 읽을 수 있습니다.$HTTP_RAW_POST_DATA에 비해 메모리 사용량이 적은 대안이며 특별한 php.ini 지시문이 필요하지 않습니다.php://input은 enctype=”multipart/form-data”와 함께 사용할 수 없습니다.
PHP 매뉴얼에서 ...그래서 php://input을 사용할 수 없는 것 같습니다.
아직 댓글을 달 수는 없지만 이는 pilsetnieks 답변을 보완하기 위한 것입니다.
업로드된 파일은 $_FILE 전역 변수를 통해 액세스할 수 있으며, 다른 매개변수는 $_GET 전역 변수를 통해 액세스할 수 있습니다.