POST Base64 закодированные данные в PHP - PullRequest
3 голосов
/ 17 ноября 2010

Мне нужно поместить некоторые данные на страницу PHP, используя cURL, и запрос содержит три параметра:

  • Два из них являются обычными текстовыми значениями
  • Один - это кодированный в Base64 файл

Я заметил, что значение Base64 повреждено во время передачи.

Это код, который отправляет запрос:

$filename = "img2.jpg"; //A sample image file
$handle = fopen($filename, "r");
$data = fread($handle, filesize($filename));
$base64 = base64_encode($data);

$postData = "id=1234&sometext=asdasd&data=" . $base64;

$ch = curl_init("http://mydomain/post.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$httpResponse = curl_exec($ch);
curl_close($ch);

Какие-нибудь советы?

Ответы [ 3 ]

15 голосов
/ 17 ноября 2010

Может быть, вам следует использовать urlencode () , потому что + и = в строке base64?

2 голосов
/ 17 ноября 2010

Убедитесь, что размер данных поста не превышает ваш 'max_post_size' в вашем файле php.ini.

0 голосов
/ 17 ноября 2010

Справедливо предположить, что кодировка добавляет знаки + -, которые портят ваши данные.

После кодирования попробуйте добавить замену + к - (и наоборот, при получении, конечно.)

Ссылка: http://en.wikipedia.org/wiki/Base64#URL_applications

...