我需要发送一个PHP file_get_contents
函数的文件。我使用下面的代码而且我没有得到......
$image['tmp_name'] = "/tmp/unnamed.png";
$image['file_image'] = base64_encode(file_get_contents("/tmp/unnamed.png"));
$image['name'] = "unnamed.png";
$image['file_name'] = "unnamed.png";
$image['type'] = "image/png";
$image['submit'] = "UPLOAD";
$url = 'http://localhost/api/upload_image';
$postdata = http_build_query(
array(
'file_name' => 'form variable1',
'file_image' => file_get_contents($image['tmp_name'])
)
);
$opts = array('http' =>
array(
'method' => 'POST',
'header' => 'Content-Type: multipart/form-data',
'content' => $postdata
)
);
$context = stream_context_create($opts);
var_export(file_get_contents($url, false, $context));
在我的python服务器上,我有以下代码:
class UploadImage(webapp.RequestHandler):
def post(self):
img = Images()
img.image = self.request.get('file_image')
img.name = self.request.get('file_name') or "no name"
img.put()
self.response.headers.add_header('content-type', 'application/json', charset='utf-8')
self.response.out.write('{"status": "OK", "image": "'+img.key.urlsafe()+'"}')
我的图片是Google NDB模型,带有" ndb.BlobProperty()"字段。
编辑: 有了这个CURL工作,但我不能在生产服务器中使用....
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($image) );
$exec = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
var_export($exec);
解决:
$image['file_image'] = base64_encode(file_get_contents($image['tmp_name']));
$image['file_name'] = "unnamed.png";
$postdata = http_build_query($image);
$opts = array('http' =>
array(
'method' => 'POST',
'content' => $postdata
)
);
$context = stream_context_create($opts);
$result = file_get_contents($url, false, $data);
$info = $this->parse_http_response_header($http_response_header);
var_export($result);
答案 0 :(得分:0)
您应该将'标题'更改为'Content-Type:application / x-www-form-urlencoded',您不需要求助于curl。有关示例,请参阅How to post data in PHP using file_get_contents?。