0

我有一个应该将文件保存到我的服务器的函数,该函数需要两个参数,文件 url 和文件名,它将在数据库中保存

function saveFile($url, $filename){

    $location = "http://138.90.30.311/docs/";
    $ext = pathinfo($url, PATHINFO_EXTENSION);
    $file_path = $location.''.$filename.'.'.$ext;
    $ch = curl_init($url);
    $fp = fopen($file_path, 'wb');  //Error here (line 16)
    curl_setopt($ch, CURLOPT_FILE, $fp);  //Error here (line 17)
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_exec($ch);
    curl_close($ch);
    fclose($fp);        
}

传入参数的示例是

filename = 14426
url = http://u.goal.com/269000/269085_hp_thumb.jpg

我让它工作了一次,但它似乎不再保存文件,我收到 3 个错误

Warning: fopen(http://138.90.30.311/docs/14426.jpg) [function.fopen]: failed to open stream: HTTP wrapper does not support writeable connections in C:\wamp\www\functions.php on line 16

Warning: curl_setopt(): supplied argument is not a valid File-Handle resource in C:\wamp\www\functions.php on line 17

在第二个错误之后,我得到了很多垃圾回显到浏览器

Warning: fclose() expects parameter 1 to be resource, boolean given in C:\wamp\www\functions.php on line 21
4

1 回答 1

0

如错误消息所述,您无法将文件写入网站(使用 HTTP)。如果您考虑一下,这是一件好事,否则我可以在未经您许可的情况下将文件写入您的网站!

您提供给fopen(特别$location是)的文件路径需要是运行 PHP 的服务器上某处的纯文件路径。

于 2013-04-03T20:33:24.443 回答