#php #forms #file-upload
#php #формы #загрузка файла
Вопрос:
Итак, я хотел отправить изображение на следующий веб-сайт (http://newocr.com /) но я понятия не имею, как это сделать. Я ничего не могу найти в Google.
Вот код, который я использую
$url = "http://newocr.com/";
$urlref = "http://newocr.com/";
$ch = curl_init();
$data_array["userfile"] = $imgpath;
$data_array["url"] = '';
$data_array["1"] = 'eng';
$data_array["preview"] ='1';
if(is_array($data_array))
{
# Convert data array into a query string (ie animal=dogamp;sport=baseball)
foreach ($data_array as $key => $value)
{
if(strlen(trim($value))>0)
$temp_string[] = $key . "=" . urlencode($value);
else
$temp_string[] = $key;
}
$query_string = join('amp;', $temp_string);
}
if(isset($query_string))
curl_setopt ($ch, CURLOPT_POSTFIELDS, $query_string);
curl_setopt ($ch, CURLOPT_POST, TRUE);
curl_setopt ($ch, CURLOPT_HTTPGET, FALSE);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_REFERER, $urlref);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$return = curl_exec($ch);
echo $return;
Переменная $ imgpath указывает, где файл хранится на моем жестком диске, но
файл не загружается с моего жесткого диска на веб-сайт. Но когда я делаю то же самое, используя URL-адрес файла, хранящегося на моем веб-хостинге, вместо пути к файлу на ПК, это работает.
Итак, кто-нибудь может сказать мне, как это сделать. Как я могу загрузить этот файл непосредственно со своего жесткого диска вместо использования URL?
Спасибо
Комментарии:
1.
url
Параметр ожидает общедоступный URL-адрес, к которому может получить доступ удаленный сервер. Ввод имени файла не будет работать, поскольку удаленный сервер не может загрузить файл.2. это была опечатка, я ее исправил, пожалуйста, прочтите еще раз
Ответ №1:
Примечание: весь ваш цикл foreach бессмыслен. curl с радостью примет массив для POSTFIELDS opt и автоматически выполнит все это построение / кодирование url для вас.
Чтобы заставить curl выполнить загрузку, вы должны сообщить ему, что передаете путь к файлу:
$opts = array(
'foo' => 'bar',
'file' => '@/path/to/file/on/server'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $opts);
Обратите внимание на @
в массиве — это подсказка для curl, что это путь к файлу, и вы хотите, чтобы он был загружен. Также обратите внимание на полное отсутствие зацикливания / ручного кодирования / построения URL.
Также обратите внимание, что в более поздних реализациях curl / php это было обновлено до выделенной опции CURLFile.
Комментарии:
1. хорошо, можете ли вы сказать, как мне указать путь, по которому он находится в том же каталоге, что и скрипт
2. извините, но если вы не можете определить путь к файлу, тогда вам не следует начинать с программирования.
3. на самом деле я только начал, я не нашел ничего общего с путем к файлу, поэтому