В PHP мне нужно сделать запрос POST, но одна из переменных должна быть текстовым файлом.Как мне это сделать? - PullRequest
2 голосов
/ 04 августа 2010

Вот что мне нужно сделать.В моем PHP-скрипте мне нужно сделать запрос POST, но один из аргументов должен быть отправлен в виде текстового файла с именем data.txt.Я уже написал небольшой скрипт, который будет отправлять запрос POST и отправлять аргументы.Сервер ожидает аргумент, который является массивом с двумя элементами, arg0 и arg1.arg0 - обычная строка, но arg1 должен быть текстовым файлом.Содержимое этого файла представляет собой сериализованные данные, которые находятся в переменной.Я смог сохранить содержимое этой переменной в локальном текстовом файле, но как мне загрузить этот файл как элемент arg1 массива?

Ответы [ 4 ]

2 голосов
/ 04 августа 2010

Если вы используете HttpRequest (PHP 5.3), существует метод addPostFile, который вы можете использовать. Смотрите документацию здесь: http://us2.php.net/manual/en/function.httprequest-addpostfile.php

2 голосов
/ 04 августа 2010

Вы не указываете, как вы делаете запрос POST, но если вы хотите использовать содержимое файла в качестве аргумента в запросе, то при построении данных вы можете использовать что-то вроде этого:

$filecontents = file_get_contents('/path/to/your_file.txt');
$data = "arg0=foo&arg1=$filecontents";
0 голосов
/ 04 августа 2010

У вас есть доступ к CURL на этом сервере?

$c = curl_init();
curl_setopt($c, CURLOPT_POST, TRUE);
curl_setopt($c, CURLOPT_URL, 'http://server.you/want/to/upload/to');
curl_setopt($c, CURLOPT_POSTFIELDS, "arg0=some+data+in+urlencoded+format&arg1=@name_of_file_with_full_path");

$res = curl_exec($c);
if($res === FALSE) {
   die("CURL failed: " . curl_error());
}

Если это невозможно, но вы все равно можете создать и запрос POST другим способом, вы всегда можете создать полное сообщение ' multipart / form-data ' и вставить содержимое файла правильное место.

0 голосов
/ 04 августа 2010

Вы можете передать имя файла как arg1, а затем на принимающей стороне открыть его с помощью

$contents = file_get_contents($_POST['filename']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...