CI 묻고 답하기

제목 ci4 getFile 질문드립니다.
카테고리 CI 4 관련
글쓴이 ci매니아 작성시각 2022/11/04 18:30:44
댓글 : 10 추천 : 0 스크랩 : 0 조회수 : 999   RSS

curl post 로 formdata로 받은 파일값($_FILES)을 아래처럼 전송하였는데 

POSTFIELD = array('filedata'=>$_FILES['upload_file']);

 

받는 쪽에서 $this->request->getFile('filedata'); 로도 인식이 안되는데 무엇이 문제인지요...?

 다음글 view 에서 레이아웃 팝업을 실행하는 방법에 대해 궁...
 이전글 hooks에서 모델호출 시 Call to undefin... (1)

댓글

테러보이 / 2022/11/07 11:03:10 / 추천 0

$this->request->getFiles();

로 전체 체크 해보신후 파일이 전달 됬는지 체크 하시고

https://solbel.tistory.com/2282

https://www.habonyphp.com/2020/12/php-curl.html

도 확인 바랍니다.

ci매니아 / 2022/11/07 11:31:05 / 추천 0
확인해보았는데 파일부분만 안됩니다... 다른 값은 넘어오는데 뭐가 문제인지 ;;
테러보이 / 2022/11/07 13:18:58 / 추천 0
그럼 파일 전송 자체가 안된것 같은데요 링크쪽을 확인해보세요
ci매니아 / 2022/11/07 13:33:31 / 추천 0

<form action> action을 바로 컨트롤러로 넘기면 getFile이 작동합니다만.

<form>으로부터 넘겨받은 $_FILES를 curl로 보내는 과정에서 안되는것같습니다.

달아주신 링크대로 하여도 안됩니다..

테러보이 / 2022/11/07 13:53:50 / 추천 0

Content-Type: multipart/form-data

헤더도 추가 하신거 맞죠?

ci매니아 / 2022/11/07 13:57:50 / 추천 0

네 그렇습니다. 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로 보낼때는 어떻게 해야 동일한 결과로 나오는지...

 

ci매니아 / 2022/11/07 14:29:31 / 추천 0

File뿐만이 아니라 curl POSTFIELD로 넘기는 post 값이던 file 값이던 getPost, getFile로 출력하려해도 안나옵니다.

curl로 ci4쪽에 POSTFIELD 전송할떄 유의해야할 것이 있나요?

curl 전송시키는 파일은 ci4가 아니라 하드코딩으로 구성된것입니다.

테러보이 / 2022/11/07 15:38:06 / 추천 0

base64_encode 로 보냈으면 받는곳에서 디코드 하셔야 하고

curl로 받는 쪽도 ci면 csrf도 체크 해보시구요(아님 필터에 추가하거나)

curl보낸뒤 리스폰 하고 http코드도 찍어보시구요.

 

파일 전송은 링크중 https://solbel.tistory.com/2282 참조하시구요

ci매니아 / 2022/11/07 16:00:34 / 추천 0

디코드도 값이 있어야 할텐데 아무 반응이 없습니다..

그냥 getFile(), getPost 로 찍었을때 아무것도 뜨질않습니다.

 

<form>태그에서 curl페이지로 전송하여 POSTFIELD에 담아 보내는 절차인데 curl페이지에서 뭔가 잘못됬는지 안되네요 ;

정석이 있는건지 ;;

 

제가 원하는 순서는

<form><input file> 전송 -> CURL POSTFIELD에 받은 input file정보 담아서 지정한 URL로 전송 -> 받은 컨트롤러에서 getFile()로 가공하여 업로드처리

 

인데 이게 안되네요;

 https://solbel.tistory.com/2282 여기도 검색하다 시도해보았지만 동일합니다.

테러보이 / 2022/11/07 18:22:17 / 추천 0
리스폰 하고 코드는 찍어보셨나요?