原始代码如下
<?php
function upload_file($url,$filename,$path){
$data = array(
'access_token' => '2.00qcIAOD0Rvw*************HIB',
'status' => '0',
'pic'=>'@'.realpath($path).";filename=".$filename
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true );
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$return_data = curl_exec($ch);
curl_close($ch);
$decode = json_decode($return_data);
echo $decode->original_pic;
} if ($_POST) {
$url = 'https://upload.api.weibo.com/2/statuses/upload.json';
$tmpname = $_FILES['fname']['name'];
$tmpfile = $_FILES['fname']['tmp_name'];
upload_file($url,$tmpname,$tmpfile);
exit;
}
echo '<form action="" enctype="multipart/form-data" method="post">
<input type="file" name="fname" />
<input type="text" name="fname" />
<input type="submit" value="Submit" />
</form>';
?>
这样可以顺利post得到返回数据,但是删掉<input type="text" name="fname" />就不行,这是为什么呢?
<?php
function upload_file($url,$filename,$path){
$data = array(
'access_token' => '2.00qcIAOD0Rvw*************HIB',
'status' => '0',
'pic'=>'@'.realpath($path).";filename=".$filename
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true );
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$return_data = curl_exec($ch);
curl_close($ch);
$decode = json_decode($return_data);
echo $decode->original_pic;
} if ($_POST) {
$url = 'https://upload.api.weibo.com/2/statuses/upload.json';
$tmpname = $_FILES['fname']['name'];
$tmpfile = $_FILES['fname']['tmp_name'];
upload_file($url,$tmpname,$tmpfile);
exit;
}
echo '<form action="" enctype="multipart/form-data" method="post">
<input type="file" name="fname" />
<input type="text" name="fname" />
<input type="submit" value="Submit" />
</form>';
?>
这样可以顺利post得到返回数据,但是删掉<input type="text" name="fname" />就不行,这是为什么呢?
当没有那个文本框时,$_POST是个空数组,if判断为假,所以不会进入if里面。最简单的解决办法是将你的提交按钮加一个name 属性
<input type="submit" name="Submit" value="Submit" />这样就可以了,当然你也可以改if条件。比如像楼上那样
if ($_SERVER['REQUEST_METHOD'] == 'POST') {}也可以