PHP에서 REST 서비스와 클라이언트를 설정했으며 PUT에 약간의 문제가 있습니다.PHP로 파일 및 데이터 배열로 PUT 요청을 보내는 방법
여기 내 상황이 있습니다 : 데이터 및 이미지 배열을 받아 들여야하는 REST 리소스를 코딩하고 있습니다. REST 리소스는 기존 레코드를 업데이트해야하므로 PUT을 사용하고 있습니다. 필자가 작성한 PHP 컬 클라이언트로 데이터를 보내고 있습니다. 따라서 파일 업로드를하고 PUT 및 PHP 컬을 제외하고 일부 POST 필드를 허용하는 PHP 스크립트에 HTML 멀티 파트 폼을 보내는 경우와 거의 같은 상황입니다.
위로 '지금까지' 과 같이 서버에서 데이터를
$a_some_data = array('name' => 'test', 'user_id' => 4);
$body = http_build_query($a_data);
$fh = fopen('php://memory', 'rw');
fwrite($body);
rewind($fh);
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => 'http://myapi/resource/someid',
CURLOPT_PUT => TRUE,
CURLOPT_INFILE => $fh,
CURLOPT_INFILESIZE => strlen($body)
));
curl_exec($ch);
독서 :했습니다이 (의사 코드) 같은 PUT 요청 뭔가를 보내고 잘 작동 요식
parse_str(file_get_contents('php://input'), $put_data);
합니다.
이제는 (바이너리) 파일을 믹스에 추가하고 싶습니다. - 클라이언트 측에서 어떻게 구현합니까? - 서버의 파일을 어떻게 처리합니까?
테스트를 위해 파일 입력으로 HTML 양식을 설정하고 전송 한 multipart/form-data 요청을 복사 한 다음 해당 데이터를 PUT 요청에서 컬링 된 파일로 전송하려고했습니다. 그런 종류의 작업이지만 수동으로 서버의 원시 데이터를 구문 분석해야하는데, 이것이 가장 좋은 아이디어인지는 확실하지 않습니다. 또는, 파일을 PUT 요청의 본문으로 보내고 다른 매개 변수를 URL에 쿼리 문자열로 추가 할 수 있다고 생각합니다. 그러나 PUT REST 리소스의 요점을 무시하는 것 같습니다.
이 점에 대해 의견을 나누십시오. 감사합니다.
감사 다니엘을 "PUT"하는 CURLOPT_CUSTOMREQUEST와 HTTP 방법을 변경합니다. 두 번째 버전은 마음에 들지만 요청은 여전히 PUT으로 보내지 만 여러 부분으로 된 콘텐츠로 전송됩니다. 이제 php : // 입력으로 서버에 올라온 데이터는 HTML 폼으로 모든 것을 보낸다면 얻을 수있는 것입니다. 가장 좋은 방법은 파싱에 대해 무엇을 알아야할까요? 이 원시 데이터에서 데이터와 파일을 추출하는 좋은 방법이 있습니까? 아니면 수동으로 파싱해야합니까? – Chris