Отправка файла в Anonfile с использованием Curl и PHP - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь отправить файл с помощью curl и PHP на anonfile , но получаю этот json:

{"status": false, "error": {"message": "Файл не выбран.", "type": "ERROR_FILE_NOT_PROVIDED", "code": 10}}

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,"https://anonfile.com/api/upload");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,'test.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$server_output = curl_exec($ch);
print_r($server_output);
curl_close ($ch);

Другими словами, как перевести эту команду в PHP?

curl -F "file=@test.txt" https://anonfile.com/api/upload

Я испробовал несколько примеров, но подсказки пока нет

$target_url = 'https://anonfile.com/api/upload';
$args['file'] = '@/test.txt';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $args);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
echo $result;

1 Ответ

0 голосов
/ 02 февраля 2019
curl_setopt($ch, CURLOPT_POSTFIELDS,'test.txt');

не будет работать, потому что буквально просто отправляет буквенную строку test.txt

$args['file'] = '@/test.txt';

не будет работать, потому что префикс @ для загрузки файлов устарел в PHP 5.5, отключен-по умолчанию по умолчанию в PHP 5.6 и полностью удален в PHP 7.0.в PHP 5.5 и выше используйте CURLFile для загрузки файлов в формате multipart/form-data.

начиная с PHP 5.5+ (что является древним на данный момент),

curl -F "file=@test.txt" https://anonfile.com/api/upload

переводится как

$ch=curl_init();
curl_setopt_array($ch,array(
    CURLOPT_URL=>'https://anonfile.com/api/upload',
    CURLOPT_POST=>1,
    CURLOPT_POSTFIELDS=>array(
        'file'=>new CURLFile("test.txt")
    )
));
curl_exec($ch);
curl_close($ch);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...