有必要base64_encode

Is it necessary to have base64_encode

我正在使用 following tutorial 将图像上传到 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,为什么?

要查看完整代码,您可以前往 here

根据 Imgur 文档,还有其他方法。

所以,要回答你的问题,不,它不是必需的,只要它是其他两个受支持的选项之一。

不,没有必要,我不知道这是否是张贴大图片的常见做法。

您还可以使用 cURL 选项 CURLOPT_INFILE

注意:下面的示例可能不起作用,它们只是未经测试的示例。

// 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;