Нужно ли иметь base64_encode

Я использую следующий учебник загрузить изображение в 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 и почему?

Чтобы увидеть полный код, вы можете перейти Вот.

1

Решение

Согласно Imgur Документация, есть альтернативные методы.

введите описание изображения здесь

Итак, чтобы ответить на ваш вопрос, нет, это не так требуется пока это один из двух других поддерживаемых вариантов.

1

Другие решения

Нет, в этом нет необходимости, и я не знаю, является ли это обычной практикой размещения огромных изображений.

Вы также можете использовать опцию 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;
0

По вопросам рекламы [email protected]