curl post 로 formdata로 받은 파일값($_FILES)을 아래처럼 전송하였는데
POSTFIELD = array('filedata'=>$_FILES['upload_file']);
받는 쪽에서 $this->request->getFile('filedata'); 로도 인식이 안되는데 무엇이 문제인지요...?
<form action> action을 바로 컨트롤러로 넘기면 getFile이 작동합니다만.
<form>으로부터 넘겨받은 $_FILES를 curl로 보내는 과정에서 안되는것같습니다.
달아주신 링크대로 하여도 안됩니다..
Content-Type: multipart/form-data
헤더도 추가 하신거 맞죠?
네 그렇습니다. Content-Type도 curl header에 추가했습니다.
- curl
1.
$filename = $_FILES['upload_file']['tmp_name'];
$handle = fopen($filename, "r");
$data = base64_encode(fread($handle, filesize($filename)));
$post_field = array('upload_file'=>$data);
2.
$post_field = $_FILES;
- ci4
$this->request->getFile('upload_file'); // 반응없음..
<form><input type="file" name="upload_file" /></form>에서 action으로 바로 ci4로 넘기면 반응이 있지만 curl을 통하여 $_FILES를 보내니 반응이 없음.
<form>에서 바로 전송했을때 getFile()의 값을 찍어보니
CodeIgniter\HTTP\Files\UploadedFile Object ([path:protected] ....) 이렇게 쭉 나오는데 이게 curl로 보낼때는 어떻게 해야 동일한 결과로 나오는지...
File뿐만이 아니라 curl POSTFIELD로 넘기는 post 값이던 file 값이던 getPost, getFile로 출력하려해도 안나옵니다.
curl로 ci4쪽에 POSTFIELD 전송할떄 유의해야할 것이 있나요?
curl 전송시키는 파일은 ci4가 아니라 하드코딩으로 구성된것입니다.
base64_encode 로 보냈으면 받는곳에서 디코드 하셔야 하고
curl로 받는 쪽도 ci면 csrf도 체크 해보시구요(아님 필터에 추가하거나)
curl보낸뒤 리스폰 하고 http코드도 찍어보시구요.
파일 전송은 링크중 https://solbel.tistory.com/2282 참조하시구요
디코드도 값이 있어야 할텐데 아무 반응이 없습니다..
그냥 getFile(), getPost 로 찍었을때 아무것도 뜨질않습니다.
<form>태그에서 curl페이지로 전송하여 POSTFIELD에 담아 보내는 절차인데 curl페이지에서 뭔가 잘못됬는지 안되네요 ;
정석이 있는건지 ;;
제가 원하는 순서는
<form><input file> 전송 -> CURL POSTFIELD에 받은 input file정보 담아서 지정한 URL로 전송 -> 받은 컨트롤러에서 getFile()로 가공하여 업로드처리
인데 이게 안되네요;
https://solbel.tistory.com/2282 여기도 검색하다 시도해보았지만 동일합니다.
$this->request->getFiles();
로 전체 체크 해보신후 파일이 전달 됬는지 체크 하시고
https://solbel.tistory.com/2282
https://www.habonyphp.com/2020/12/php-curl.html
도 확인 바랍니다.