Использование cURL для загрузки файла без символа @?

У меня есть небольшая проблема, как я могу указать cURL специально прикрепить файл к запросу?

Если я загружаю файл с помощью cURL, то общий метод заключается в том, чтобы прикрепить его как часть массива данных POST со значением, имеющим @ перед ним, например:

CURLOPT_POSTFIELDS=>array('my-file'=>'@my-file.txt')

Это, очевидно, сработает, но у меня есть две проблемы с этим:

  • Что, если это не тот файл, который я загружаю? Что, если значением POST на самом деле является «@my -file.txt», и вместо этого он пытается загрузить файл? Это создает лазейку, которую я отчаянно пытаюсь избежать.
  • Как я могу загрузить файл с URL-адреса? Должен ли я загрузить его, сохранить во временной папке, а затем прикрепить с помощью @ из этой временной папки? Почему я не могу предоставить cURL только то содержимое, которое я хочу использовать в качестве файла?

cURL CURLOPT _INFILE не является опцией, так как он не будет отображаться как часть массива $ _FILES.

Похоже, такая лазейка в cURL зависит от символа @ в значении поля POST. Есть ли способ обойти это? Почему нет массива CURLOPT _FILEFIELDS? Строка команды -cURL имеет отдельный флаг для этого (-F ), но по какой-то причине я не вижу его как опцию в PHP.

Любая помощь будет принята с благодарностью, спасибо!

5
задан kingmaple 11 August 2012 в 09:36
поделиться