размещение файла "multipart / form-data" через php - PullRequest
0 голосов
/ 08 сентября 2010

Я пытаюсь использовать imageshshack API в php

следующим образом:

<?php
function do_post_request($url, $data, $optional_headers = null) {
  $params = array('http' => array(
              'method' => 'POST',
              'content' => $data
            ));
  if ($optional_headers !== null) {
    $params['http']['header'] = $optional_headers;
  }
  $ctx = stream_context_create($params);
  $fp = @fopen($url, 'rb', false, $ctx);
  if (!$fp) {
    throw new Exception("Problem with $url, $php_errormsg");
  }
  $response = @stream_get_contents($fp);
  if ($response === false) {
    throw new Exception("Problem reading data from $url, $php_errormsg");
  }
  return $response;
}

    $fileName = $_FILES['picture']['name'];
    $tmpName = $_FILES['picture']['tmp_name'];
    $fileSize = $_FILES['picture']['size'];
    $fileType = $_FILES['picture']['type'];
    $fo = @fopen($tmpName, "r");
    $imgposted = @fread($fo, filesize($tmpName));
    $imgposted = addslashes($imgposted);

    $data = 'fileupload='.$imgposted.'&rembar=1&key=******';
    echo do_post_request('http://www.imageshack.us/upload_api.php',$data);

?>

но данные публикуются нормально, я хотел их опубликовать, как если бы у меня была форма с этим атрибутом:

enctype="multipart/form-data"

любое решение?

Ответы [ 2 ]

0 голосов
/ 08 сентября 2010

Вы должны установить его в качестве заголовка:

$optional_headers = array(
  'Content-Type'=>'multipart/form-data'
);

При вызове функции:

do_post_request('http://www.imageshack.us/upload_api.php', array(
   'Content-Type'=>'multipart/form-data'
));

РЕДАКТИРОВАТЬ: Я думаю, что вы также должны url_encode вместо того, чтобы делать addslashes.

0 голосов
/ 08 сентября 2010

do_post_request(
    'http://www.imageshack.us/upload_api.php',
    $data,
    'Content-Type: multipart/form-data')
);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...