使用文件夹中的file_put_contents保存文件

时间:2013-06-20 12:14:22

标签: php apache

file_put_contents('image.jpg',file_get_contents('http://static.adzerk.net/Advertisers/12f0cc69cd9742faa9c8ee0f7b0d210e.jpg'));

这工作正常 - 将文件保存在当前文件夹中,但如果我尝试:

file_put_contents('/subfolder/image.jpg',file_get_contents('http://static.adzerk.net/Advertisers/12f0cc69cd9742faa9c8ee0f7b0d210e.jpg'));

然后我有错误:

  

无法打开流:

中没有此类文件或目录

为什么呢?如何在子文件夹中保存?

7 个答案:

答案 0 :(得分:12)

始终使用完整路径并确保目录可写。您也可以直接将copy与网址

一起使用
$url = 'http://static.adzerk.net/Advertisers/12f0cc69cd9742faa9c8ee0f7b0d210e.jpg';
$dir = __DIR__ . "/subfolder"; // Full Path
$name = 'image.jpg';

is_dir($dir) || @mkdir($dir) || die("Can't Create folder");
copy($url, $dir . DIRECTORY_SEPARATOR . $name);

答案 1 :(得分:7)

尝试省略第一个斜杠:

file_put_contents('subfolder/image.jpg',file_get_contents('http://static.adzerk.net/Advertisers/12f0cc69cd9742faa9c8ee0f7b0d210e.jpg'));

如果仍然无效,请检查访问权限。

答案 2 :(得分:4)

您应该检查文件夹是否存在,如果没有,请创建此文件夹

$dir_to_save = "/subfolder/";
if (!is_dir($dir_to_save)) {
  mkdir($dir_to_save);
}
file_put_contents($dir_to_save.'image.jpg',file_get_contents('http://static.adzerk.net/Advertisers/12f0cc69cd9742faa9c8ee0f7b0d210e.jpg'));

还要确保您要使用 ABSOLUTE_PATH 而不是 RELATIVE

答案 3 :(得分:1)



file_put_contents('../subfolder/image.jpg',file_get_contents('http://static.adzerk.net/Advertisers/12f0cc69cd9742faa9c8ee0f7b0d210e.jpg'));

add "../" in your string put into the file_put_contents function then it will work fine..




答案 4 :(得分:0)

$dir = "folder_name".$filename;

您可以使用上述内容将内容简单地放入任何文件夹的任何文件中。

答案 5 :(得分:0)

我的问题是由文件夹权限引起的。 当我创建子文件夹时,root是所有者, 由于我的php使用apache用户运行,因此我需要将文件夹的所有者更新为apache

答案 6 :(得分:-1)

您必须使用反斜杠:

     file_put_contents('images\\'.$filename, base64_decode($imgBase64));

    file_put_contents('K:\\Site\\images\\'.$filename, base64_decode($imgBase64));