php curl上传图片怎么获取本地图片绝对路径?

通过php Curl上传图片到服务端,如何在前端将图片POST过来?因为curl上传图片需要获取本地图片的绝对路径,但是浏览器获取不到的,只能获取宇哥fakepath

<?php
//设置 header 
header("Content-type:application/json");

//初始化 CURL
$ch = curl_init();

//目标服务器地址 
curl_setopt($ch, CURLOPT_URL, 'https://mp.sohu.com/commons/upload/file');

//设置上传的文件 
curl_setopt($ch, CURLOPT_POST, true);
$data = array('file' => new CURLFile("这里要填绝对路径才可以上传")); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_exec($ch);
curl_close($ch);
?>

完整的绝对路径是
C:/Users/Administrator/Desktop/123.jpg

但是浏览器获取不到,大家用curl是怎么上传图片的?怎么获取图片路径?

阅读 4.9k
3 个回答

看你的需求是,用户先把文件传到服务器 A 、再在服务器 A 中使用 CURL 把文件传到 CURL B ?

+------------------+        +------------------+       +------------------+
|                  |        |                  |       |                  |
|                  |        |                  |       |                  |
|       User       +------->+    Server A      +------>+     Server B     |
|                  |        |                  |       |                  |
|                  |        |                  |       |                  |
+------------------+        +------------------+       +------------------+

这样的话,用户上传文件后, $_FILES 里面表单键值的 tmp_name ,就是暂存在服务器 A上面的路径,可以用 CURL 直接上传到服务器 B。但是,这种情况一般都建议使用 User ---> Server B,用户直传 Server B,而不是通过 Server A 进行中转

  1. 前端上传到服务器A后,先保存到服务器A,保存的时候自然知道绝对路径,然后按你的方法进行后面的操作;
  2. 或者,前端直接把文件 base64 的格式传到后端,服务器A直接把 base64 的数据 post到服务器B去。

经过后续的学习,是不能实现直接A->C的,只能A->B->C,我要实现的是图片上传,先在浏览器上传图片到我自己的服务器,然后通过我自己的服务器模拟提交到sohu的服务器,我的服务器作为一个中转站。

成品:http://upload.likeyunba.com/

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏