php 5.4 버전 new CURLFile

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

QA

php 5.4 버전 new CURLFile

답변 4

본문

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);
답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 0
© SIRSOFT
현재 페이지 제일 처음으로