Я использую следующий учебник загрузить изображение в imgur. Я хочу знать, нужно ли иметь base64_encode
при отправке данных.
Вот небольшой фрагмент кода:
$img=$_FILES['img'];
$filename = $img['tmp_name'];
$data = fread($handle, filesize($filename));
$pvars = array('image' => base64_encode($data)); // Here's the base64_encode
curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars);
Нужно ли иметь base64_encode
и почему?
Чтобы увидеть полный код, вы можете перейти Вот.
Согласно Imgur Документация, есть альтернативные методы.
Итак, чтобы ответить на ваш вопрос, нет, это не так требуется пока это один из двух других поддерживаемых вариантов.
Нет, в этом нет необходимости, и я не знаю, является ли это обычной практикой размещения огромных изображений.
Вы также можете использовать опцию cURL CURLOPT_INFILE
BEWARE: Приведенные ниже примеры могут не работать, это просто непроверенные примеры.
// This is the entire file that was uploaded to a temp location.
$localFile = $_FILES[$fileKey]['tmp_name'];
$fp = fopen($localFile, 'r');
// Connecting to website.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target_url );
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_BUFFERSIZE, 128);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localFile));
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
echo $result;
Или просто простой POST
$post = array('extra_info' => '123456','file_contents'=>'@'.$_FILES['upload']['tmp_name']);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
echo $result;