【问题标题】:How to upload file from local to server using curl in php?如何使用 php 中的 curl 将文件从本地上传到服务器?
【发布时间】:2019-07-04 16:53:11
【问题描述】:

我想在 php 中使用 curl 将文件从本地上传到服务器,而不使用表单(即 html)。

我的php版本是5.2.6。

我尝试了很多不同的方法并做了很多研究(使用php中的curl将文件上传到服务器),但是google的解决方案无法解决我的问题。

下面是我的代码:

// open file descriptor
$fp = fopen ("user.com/user/fromLocal.txt", 'w+') or die('Unable to write a file'); 

// file to download
$ch = curl_init('C:/wamp/www/user/fromLocal.txt');
// enable SSL if needed
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

// output to file descriptor
curl_setopt($ch, CURLOPT_FILE, $fp);          
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
// set large timeout to allow curl to run for a longer time
curl_setopt($ch, CURLOPT_TIMEOUT, 1000);     
curl_setopt($ch, CURLOPT_USERAGENT, 'any');
// Enable debug output
curl_setopt($ch, CURLOPT_VERBOSE, true);

echo $ch;
echo $fp;
curl_exec($ch);
curl_close($ch);                               
fclose($fp);

预期输出:

文件可以上传到服务器并查看。

实际输出:

无法写入文件

【问题讨论】:

  • @AlessandroBellanda 解决方案没有解决我的问题
  • user.com/user/fromLocal.txt 所以您希望 PHP 侵入 user.com 服务器并写入文件?这是行不通的。
  • @emix 抱歉,我是 php 新手。请原谅我的错误并感谢您的回复。
  • 您需要决定实际的上传方法。仅使用 curl 并不能完全消除它。服务器需要提供一种接收文件的方法。除非您详细说明您的配置方式,例如PUT 请求通过,或设置脚本来接收它,这是无法回答的。此代码示例通常用于下载,而不是上传,顺便说一句。

标签: php curl file-upload


【解决方案1】:

我认为你错过了重要信息。

fopen ("user.com/user/fromLocal.txt", 'w+')

这没有任何意义。 要将文件发送到服务器,必须将服务器配置为接受 POST 请求,并且您必须通过该端点发送文件。

如果您有表单,您是否将其发送到:“user.com/user/fromLocal.txt”?? 您必须使用 curl 创建表单数据并将其发送到准备好接受您的请求的服务器。有不同的方法可以做到这一点。最简单的方法就是使用 curl 而不是 HTML 发送表单。但是绝对不能在服务器上写这样的文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-14
    • 2015-05-14
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 2014-03-22
    • 2017-04-30
    相关资源
    最近更新 更多