我已经使用$security->getIndex(‘/action/upload’)得到上传接口了,想使用curl将图片上传到附件
$picUrl是图片地址,
$uploadUrl是$security->getIndex的上传接口,都能正常得到想要的值
我感觉问题就出现在这个curl
$picUrl = 'https://api.mmbkz.cn/ziyuan/ads.png'; $picContent = file_get_contents($picUrl); Typecho_Widget::widget('Widget_Security')->to($security); $uploadUrl = $security->getIndex('/action/upload?cid='.$this->cid); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $uploadUrl); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $picContent); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $HTTP = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); echo $HTTP.'<br>'; echo $response.'<br>'; echo $uploadUrl.'<br>';
为什么返回了状态码403?
我使用js的方式很容易上传图片附件,但是使用php却不行。
请问如何使用php,并搭配typecho的$security->getIndex('/action/upload')
实现上传附件的功能呢
非常感谢!
希望有大佬帮忙解答!!
方便的话,可以创建一个ty页面模板,然后放上这些代码,你就会看到返回了403
$picUrl = 'https://api.mmbkz.cn/ziyuan/ads.png'; $picContent = file_get_contents($picUrl); // 把图片内容保存到临时文件里 $tempFile = tempnam(sys_get_temp_dir(), 'upload'); file_put_contents($tempFile, $picContent); Typecho_Widget::widget('Widget_Security')->to($security); $uploadUrl = $security->getIndex('/action/upload?cid='.$this->cid); // 创建一个CURLFile对象 $cfile = curl_file_create($tempFile, 'image/png', 'ads.png'); // 设置POST数据 $post = array('file' => $cfile); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $uploadUrl); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); $HTTP = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); // 删除临时文件 unlink($tempFile); echo $HTTP.'<br>'; echo $response.'<br>'; echo $uploadUrl.'<br>';