반응형
하늘은 원래 사진 구름의 API를 시험해 보고 싶었기 때문에 현지에서는 사진을 업로드하는 테스트를 했는데, 우울할 때 이전에 잘 사용하던 CURL 업로드 이미지가 제대로 작동하지 않았다. 원래 몇 분 안에 일을 처리했는데, 결국 반나절 만에 원인을 찾았다. 호환성 문제라니, 정말 어이가 없다.
인터넷 검색 PHP가 CURL을 통해 이미지를 업로드 하는 것은 거의 모두 다음과 유사한 코드입니다
이전에는 이미지 업로드 경로 앞에 다음과 같이 @ 기호를 추가했습니다
$file = __DIR__ .'/0634134726bc5b8b.jpg';
$data = array('mypic'=>'@'. $file);
이렇게 하면 되는데 지금은 보통 PHP 5.6 이하 버전에만 적용되고 있다.
5.6에 직접 @를 붙이는 것은 나무로 유용하다.
해결책은 두 가지다: 호환성과 새로운 방법을 사용하는 것이다.
1. 호환 방법:
CURL에 주로 사용되는 설정 매개 변수 CURLOPT_SAFE_UPLOAD
CURLOPT_SAFE_UPLOAD PHP 5.5의 기본값은 false
PHP 5.6에서는 이미 트루로 묵인됐다.
따라서 다음과 같이 false로 설정할 수 있는 행을 하나 더 늘리면 됩니다.
주기: 이 매개 변수의 설정 순서, CURLOPT_POSTFIE를 설정해야 합니다LDS 파라미터 이전부터 유효합니다!!!
<?php
$url = 'http://127.0.0.1/test3.php';
$file = __DIR__ .'/0634134726bc5b8b.jpg';
$data = array('mypic'=>'@'. $file);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$content = curl_exec($curl);
curl_close($curl);
print_r($content);
2. 새로운 이미지 업로드 방법:
CURLFile 클래스 사용하기다음과 같이 파일을 처리합니다
$url = 'http://127.0.0.1/test3.php';
$file = __DIR__ .'/0634134726bc5b8b.jpg';
$data = array('mypic'=>new CURLFile($file));
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$content = curl_exec($curl);
curl_close($curl);
print_r($content);
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
PHP forach에 대한 인용 변수 사용 피트 (0) | 2022.08.02 |
---|---|
PHPStorm PSR-4 네임스페이스 접두사 추가 (0) | 2022.08.02 |
php 파일 업로드 이미지 형식이 이미지인지 여부 판단 (0) | 2022.08.02 |
php로 md5 복호화를 위한 소스 (0) | 2022.08.02 |
php 두 자릿수 그룹을 키 값으로 정렬합니다 (0) | 2022.08.02 |