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_fopen
과allow_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);
답변을 작성하시기 전에 로그인 해주세요.