php 5.4 버전 new CURLFile

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
php 5.4 버전 new CURLFile

QA

php 5.4 버전 new CURLFile

본문

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

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

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

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

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

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

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

이 질문에 댓글 쓰기 :

답변 4

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

 


<?php
// 업로드할 파일 경로
$file_path = '/path/to/your/file.txt';
// 업로드하려는 파일이 존재하는지 확인
if (!file_exists($file_path)) {
    die("File does not exist: $file_path");
}
// CURL 초기화
$ch = curl_init();
// API URL 설정
$url = "https://example.com/upload"; // 파일을 업로드할 API의 URL
curl_setopt($ch, CURLOPT_URL, $url);
// POST 요청 설정
curl_setopt($ch, CURLOPT_POST, true);
// 파일 데이터 설정 (PHP 5.4에서 @를 사용)
$post_fields = [
    'file' => '@' . $file_path, // 파일 경로에 '@'를 추가
    'other_field' => 'example_value' // 추가 필드가 있을 경우 함께 전송
];
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
// CURL 옵션 설정
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 요청 실행
$response = curl_exec($ch);
// CURL 에러 체크
if (curl_errno($ch)) {
    echo 'CURL Error: ' . curl_error($ch);
} else {
    echo 'Response: ' . $response;
}
// CURL 종료
curl_close($ch);
?>
 

 

  • php.ini에서 allow_url_fopenallow_url_include가 활성화되어 있어야 합니다.
  • file_uploads 설정도 On으로 설정되어야 합니다.

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

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

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


 
<?php
 
// 파일 업로드를 위한 URL
$url = 'https://example.com/upload.php';
 
// 업로드할 파일의 경로
$filename = 'test.txt';
 
// curl 세션 초기화
$ch = curl_init();
 
// 헤더 설정
$headers = array(
    'Content-Type: multipart/form-data'
);
 
// 옵션 설정
curl_setopt_array($ch, array(
    CURLOPT_URL => $url,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => array(
        'file' => curl_file_create($filename)
    ),  
    CURLOPT_HTTPHEADER => $headers
));
 
// 요청 실행
$result = curl_exec($ch);
 
// 오류 처리
if (curl_errno($ch)) {
    echo 'Error: ' .
curl_error($ch);
} else {
    // 업로드 성공 시 응답 처리
    echo $result;
}
 
// curl 세션 종료
curl_close($ch);

 

시도해보세요

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


<?php
$file_path = '/path/to/your/file.txt';
if (!file_exists($file_path)) {
    die("File does not exist: $file_path");
}
$url = "https://example.com/upload";
$file_content = file_get_contents($file_path);
$file_name = basename($file_path);
$boundary = uniqid();
$delimiter = '-------------' . $boundary;
$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);
답변을 작성하시기 전에 로그인 해주세요.
전체 30
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT