>백엔드 개발 >PHP 튜토리얼 >http - PHP PUT을 통해 파일을 전송할 때 파일 내용을 얻는 방법은 무엇입니까?

http - PHP PUT을 통해 파일을 전송할 때 파일 내용을 얻는 방법은 무엇입니까?

WBOY
WBOY원래의
2016-10-11 14:23:321118검색

최근 프론트엔드와 백엔드 분리로 인해 백엔드 PHP의 모든 API는 RESTFul 스타일을 사용합니다.

그런데 PUT을 사용해 파일을 업로드할 때 $_FILES에 파일 정보가 없다는 사실을 발견했습니다(확인할 임시 파일이 업로드되지 않았을 수도 있음). POST을 사용해도 괜찮고 PUT을 얻었습니다. it from 标准输入流 데이터는 다음 형식으로 읽혀지며(표준 입력 스트림에 파일 정보가 포함되어 있으므로 위에서 임시 파일을 업로드하지 않은 것으로 추측) 별도로 구문 분석해야 합니다.

<code>#获取到的输入流内容

------WebKitFormBoundarybzEhWNCqbo9qKZBX
Content-Disposition: form-data; name="upload"; filename="一些不错的职位.md"
Content-Type: text/markdown

xxxx
xxxx
xxxx

------WebKitFormBoundarybzEhWNCqbo9qKZBX--</code>

현재 두 가지 아이디어가 있습니다.

  1. 上传임시 파일(테스트 중...)인 경우: 업로드된 경우 임시 파일을 읽을 수 있습니다.

  2. 不上传임시 파일인 경우: form-data에서 전달한 이 매개변수 문자열을 구문 분석해 보지만 php 형식을 구문 분석하는 해당 방법이 있는지 모르겠습니다.

그런데 RESTFul을 사용할 때 종종 문제가 발생합니다.

  1. 크로스 도메인의 경우 일반 형식(GET, POST)은 괜찮지만 PUT 및 DELETE를 사용할 경우 크로스 도메인 헤더를 설정해야 합니다.
    PS: 이해가 안 돼요. 왜 필요한가요?

  2. MDN HTTP Method 문서에 PUT, DELETE...

  3. 에 대한 자세한 소개가 없습니다.
  4. PHP는 PUT을 얻고 DELETEfile_get_contents('php://input');에서 매개변수 정보를 가져와야 합니다. $_PUT, $_DELETE과 같은 전역 변수는 없습니다.

============= [22:01] ===================

stackoverflow에서 쇼핑을 갔는데 많은 사람들이 같은 문제를 겪었지만 아직 더 나은 해결책을 찾지 못했습니다.

게다가 이번 글에서는 jquery ajax put file, php save file 에서 블로거와 저는 같은 문제에 직면했는데, 그는 정규 규칙을 사용하여 데이터를 파싱하고 처리했습니다.

PHP을 모방하여 POST 요청을 처리하고, form-data 문자열을 구문 분석하고, 일반 매개변수를 $_PUT($_POST)에 저장하고, 파일을 전달하는 더 나은 솔루션이 있는지 궁금합니다. 임시 디렉터리를 삭제한 다음 파일 정보를 $_FILES.

에 반환합니다.

============ [ 10-10 10:16 ] ===================

이 블로그 게시물에서는 multipart/form-data 형식을 사용하여 파일을 업로드하는 방법에 대한 form-data 형식에 대해 설명합니다.

지금은 form-data을 구문 분석하는 composer 컴포넌트를 작성해 보겠습니다.

답글 내용:

최근 프론트엔드와 백엔드 분리로 인해 백엔드 PHP의 모든 API는 RESTFul 스타일을 사용합니다.

그런데 PUT을 사용해 파일을 업로드할 때 $_FILES에 파일 정보가 없다는 사실을 발견했습니다(확인할 임시 파일이 업로드되지 않았을 수도 있음). POST을 사용해도 괜찮고 PUT을 얻었습니다. it from 标准输入流 데이터는 다음 형식으로 읽혀지며(표준 입력 스트림에 파일 정보가 포함되어 있으므로 위에서 임시 파일을 업로드하지 않은 것으로 추측) 별도로 구문 분석해야 합니다.

<code>#获取到的输入流内容

------WebKitFormBoundarybzEhWNCqbo9qKZBX
Content-Disposition: form-data; name="upload"; filename="一些不错的职位.md"
Content-Type: text/markdown

xxxx
xxxx
xxxx

------WebKitFormBoundarybzEhWNCqbo9qKZBX--</code>

현재 두 가지 아이디어가 있습니다.

  1. 上传임시 파일(테스트 중...)인 경우: 업로드된 경우 임시 파일을 읽을 수 있습니다.

  2. 不上传임시 파일인 경우: form-data에서 전달한 이 매개변수 문자열을 구문 분석해 보지만 php 형식을 구문 분석하는 해당 방법이 있는지 모르겠습니다.

그런데 RESTFul을 사용할 때 종종 문제가 발생합니다.

  1. 크로스 도메인의 경우 일반 형식(GET, POST)은 괜찮지만 PUT 및 DELETE를 사용할 경우 크로스 도메인 헤더를 설정해야 합니다.
    PS: 이해가 안 돼요. 왜 필요한가요?

  2. MDN HTTP Method 문서에 PUT, DELETE...

  3. 에 대한 자세한 소개가 없습니다.
  4. PHP는 PUT을 얻고 DELETEfile_get_contents('php://input');에서 매개변수 정보를 가져와야 합니다. $_PUT, $_DELETE과 같은 전역 변수는 없습니다.

============= [22:01] ===================

stackoverflow에서 쇼핑을 갔는데 많은 사람들이 같은 문제를 겪었지만 아직 더 나은 해결책을 찾지 못했습니다.

게다가 이번 글에서는 jquery ajax put file, php save file 에서 블로거와 저는 같은 문제에 직면했는데, 그는 정규 규칙을 사용하여 데이터를 파싱하고 처리했습니다.

PHP을 모방하여 POST 요청을 처리하고, form-data 문자열을 구문 분석하고, 일반 매개변수를 $_PUT($_POST)에 저장하고, 파일을 전달하는 더 나은 솔루션이 있는지 궁금합니다. 임시 디렉터리를 삭제한 다음 파일 정보를 $_FILES.

에 반환합니다.

============ [ 10-10 10:16 ] ===================

이 블로그 게시물에서는 multipart/form-data 형식을 사용하여 파일을 업로드하는 방법에 대한 form-data 형식에 대해 설명합니다.

지금은 form-data을 구문 분석하는 composer 컴포넌트를 작성해 보겠습니다.

PHP의 전역 변수 $_FILES는 게시를 통해 업로드된 파일만 가져올 수 있습니다. 파일 업로드에 put을 사용하려면 스트림을 직접 처리해야 합니다.

휴대폰의 경우 현재 주류는 get+post+json입니다

4, 표준양식 데이터 업로드 형식

php put은 별도로 파싱해야 하며, put은 일반적으로 json 형식의 데이터를 받아들이는 데 사용됩니다

답변해주셔서 감사합니다. 또한 질문을 다시 수정했습니다. :)

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.