Фрагмент кода:
Вот мой фрагмент кода:
function uploadByCurl($uploadFilePath, $accessToken){
$ch = curl_init();
$mimeType = mime_content_type($uploadFilePath);
$fileType = '';
if(strpos($mimeType, 'image')!==false){
$fileType = 'image';
}else if(strpos($mimeType, 'video')!==false){
$fileType = 'video';
}
if(!$fileType){
return false;
}
$filename = basename($uploadFilePath);
$options = [
CURLOPT_URL => 'https://api.imgur.com/3/upload',
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization:Bearer ' . $accessToken,
],
CURLOPT_POSTFIELDS => [
//$fileType's value can be 'image' or 'video'
$fileType => new \CURLFile($uploadFilePath),
'type' => 'file',
'name' => $filename,
'title' => $filename,
'description' => $filename,
],
//In case you're in Windows, sometimes will throw error if not set SSL verification to false
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_TIMEOUT => 30,
];
//In case you need a proxy
//$options[CURLOPT_PROXY] = 'http://127.0.0.1:1087';
// var_dump($options);exit;
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
if(curl_errno($ch)){
echo 'Error: ' . curl_error($ch);
}
return $result;
}
$uploadFilePath = '/path/to/YOU_VIDEO.mp4';
$accessToken = '<YOU ACCESS TOKEN>';
$result = uploadByCurl($uploadFilePath, $accessToken);
var_dump($result);
Загрузка изображения
Фрагмент кода выше можно использовать для загрузки изображения и видео, для изображения , он работает нормально, успешно загружает изображение и возвращает ссылку на изображение, и самое главное, изображение прикреплено к моей учетной записи Imgur, ответ json выглядит следующим образом:
{
"data": {
"id": "C1CuRYw",
"title": "Xnip2020-04-04_15-43-41.jpg",
"description": "Xnip2020-04-04_15-43-41.jpg",
"datetime": 1585987477,
"type": "image/jpeg",
"animated": false,
"width": 748,
"height": 632,
"size": 126123,
"views": 0,
"bandwidth": 0,
"favorite": false,
"account_id": 96115121,
"is_ad": false,
"in_most_viral": false,
"has_sound": false,
"tags": [],
"ad_type": 0,
"ad_url": "",
"edited": "0",
"in_gallery": false,
"deletehash": "uTg1rOZhEggKjgR",
"name": "Xnip2020-04-04_15-43-41.jpg",
"link": "https://i.imgur.com/C1CuRYw.jpg"
},
"success": true,
"status": 200
}
Загрузка видео
Я также могу успешно загрузить видео, и формат ответа json совпадает с форматом загрузки изображения:
{
"status": 200,
"success": true,
"data": {
"id": "SHCsEXK",
"deletehash": "44oeDQCmP0Oba3o",
"title": "testvideo.mp4",
"description": "testvideo.mp4",
"name": "",
"type": "video/mp4",
"width": 0,
"height": 0,
"size": 0,
"views": 0,
"bandwidth": 0,
"animated": true,
"favorite": false,
"in_gallery": false,
"in_most_viral": false,
"has_sound": false,
"is_ad": false,
"link": "https://i.imgur.com/SHCsEXK.mp4",
"tags": [],
"processing": {
"status": "pending"
},
"datetime": 1585986090,
"mp4": "https://i.imgur.com/SHCsEXK.mp4",
"hls": ""
}
}
link
в порядке, но проблема Я могу Вы не видите это видео в моей учетной записи Imgur , это означает, что оно не прикреплено к моей учетной записи.
Другая конечная точка загрузки
На самом деле, можно использовать еще одну конечную точку загрузки, которая https://api.imgur.com/3/image
(см. здесь ), я попытался изменить:
CURLOPT_URL => 'https://api.imgur.com/3/upload',
на:
CURLOPT_URL => 'https://api.imgur.com/3/image',
Это сработало, и на этот раз видео успешно прикреплено на мой аккаунт Imgur, но дело в том, что в ответе нет видео ссылки, вот ответ json от https://api.imgur.com/3/image
конечная точка:
{
"data": {
"ticket": "33565dc7"
},
"success": true,
"status": 200
}
Для чего используется ticket
? Я никогда не нашел его на API do c.
Что означает значок блокировки?
И я нашел это в здесь : Что означает значок lock
?