테스트 사이트 - 개발 중인 베타 버전입니다

php 5.4 버전 new CURLFile

new CURLFile 함수가 5.5 이상 7버전에서 사용을 하는데

저희 회사 php 버전에 5.4 버전이라 해당 함수 사용을 못해서

파일 업로드 api 사용이 불가능해서

혹시 해당 기능을 5.4 버전에서 사용해보신 분 있으시면 답변 부탁드립니다.

며칠째 골머리를 썩고 있는데 

해결을 못하고 있습니다. ㅠㅠ

고수님들의 조언 부탁드립니다.

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

※ 바운더리와 컨텐츠를 직접 설정하여 보세요.

</p>

<p><?php

$file_path = '/path/to/your/file.txt';

if (!file_exists($file_path)) {

    die("File does not exist: $file_path");

}

$url = "<a href="https://example.com/upload";" target="_blank" rel="noopener noreferrer">https://example.com/upload";</a>

$file_content = file_get_contents($file_path);

$file_name = basename($file_path);

$boundary = uniqid();

$delimiter = '-------------' . $boundary;</p>

<p>$post_data = "--" . $delimiter . "\r\n" .

    "Content-Disposition: form-data; name=\"file\"; filename=\"" . $file_name . "\"\r\n" .

    "Content-Type: application/octet-stream\r\n\r\n" .

    $file_content . "\r\n" .

    "--" . $delimiter . "--\r\n";

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, [

    "Content-Type: multipart/form-data; boundary=" . $delimiter,

    "Content-Length: " . strlen($post_data)

]);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

if (curl_errno($ch)) {

    echo 'CURL Error: ' . curl_error($ch);

} else {

    echo 'Response: ' . $response;

}

curl_close($ch);</p>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

</p>

<p> </p>

<p><?php</p>

<p> </p>

<p>// 파일 업로드를 위한 URL</p>

<p>$url = '<a href="https://example.com/upload.php';" target="_blank" rel="noopener noreferrer">https://example.com/upload.php';</a></p>

<p> </p>

<p>// 업로드할 파일의 경로</p>

<p>$filename = 'test.txt';</p>

<p> </p>

<p>// curl 세션 초기화</p>

<p>$ch = curl_init();</p>

<p> </p>

<p>// 헤더 설정</p>

<p>$headers = array(</p>

<p>    'Content-Type: multipart/form-data'</p>

<p>);</p>

<p> </p>

<p>// 옵션 설정</p>

<p>curl_setopt_array($ch, array(</p>

<p>    CURLOPT_URL => $url,</p>

<p>    CURLOPT_POST => true,</p>

<p>    CURLOPT_POSTFIELDS => array(</p>

<p>        'file' => curl_file_create($filename)</p>

<p>    ),  </p>

<p>    CURLOPT_HTTPHEADER => $headers</p>

<p>));</p>

<p> </p>

<p>// 요청 실행</p>

<p>$result = curl_exec($ch);</p>

<p> </p>

<p>// 오류 처리</p>

<p>if (curl_errno($ch)) {</p>

<p>    echo 'Error: ' .</p>

<p>curl_error($ch);</p>

<p>} else {</p>

<p>    // 업로드 성공 시 응답 처리</p>

<p>    echo $result;</p>

<p>}</p>

<p> </p>

<p>// curl 세션 종료</p>

<p>curl_close($ch);</p>

<p>

 

시도해보세요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

api 도 외부에서 제공하는것일텐데 아마 답변대로 처리가 어려울것 같습니다.

근본적인 해결방법이 아니고 api 업체에서도 굳이 우회처리된 파일을 만들어주긴 힘드니까요..

이번 기회에 php7 이상으로 업데이트를 하시는게 좋을것 같습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

답변 감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

php버전을 사실 올리시는게 맞습니다만..

 

</p>

<p><?php

// 업로드할 파일 경로

$file_path = '/path/to/your/file.txt';</p>

<p>// 업로드하려는 파일이 존재하는지 확인

if (!file_exists($file_path)) {

    die("File does not exist: $file_path");

}</p>

<p>// CURL 초기화

$ch = curl_init();</p>

<p>// API URL 설정

$url = "<a href="https://example.com/upload";" target="_blank" rel="noopener noreferrer">https://example.com/upload";</a> // 파일을 업로드할 API의 URL

curl_setopt($ch, CURLOPT_URL, $url);</p>

<p>// POST 요청 설정

curl_setopt($ch, CURLOPT_POST, true);</p>

<p>// 파일 데이터 설정 (PHP 5.4에서 @를 사용)

$post_fields = [

    'file' => '@' . $file_path, // 파일 경로에 '@'를 추가

    'other_field' => 'example_value' // 추가 필드가 있을 경우 함께 전송

];

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);</p>

<p>// CURL 옵션 설정

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);</p>

<p>// 요청 실행

$response = curl_exec($ch);</p>

<p>// CURL 에러 체크

if (curl_errno($ch)) {

    echo 'CURL Error: ' . curl_error($ch);

} else {

    echo 'Response: ' . $response;

}</p>

<p>// CURL 종료

curl_close($ch);

?>

 </p>

<p>

 

  • php.ini에서 allow_url_fopenallow_url_include가 활성화되어 있어야 합니다.
  • file_uploads 설정도 On으로 설정되어야 합니다.
로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

답변 감사합니다.
하지만 해당 방법으로는 안되더라구요 ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인

전체 질문 목록

🐛 버그신고