문제

나는 다음을 받고 싶다 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 전역 변수를 통해 액세스할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top