11
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'));

我有一个错误:

无法打开流:[…] 中没有这样的文件或目录

为什么会出现这个错误?如何将文件保存在子文件夹中?

4

7 回答 7

16

始终使用完整路径并确保目录是可写的。您也可以copy直接使用 URL

$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);
于 2013-06-20T12:22:43.637 回答
11

尝试省略第一个斜杠:

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

如果这仍然不起作用,请检查访问权限。

于 2013-06-20T12:17:19.037 回答
5

您应该检查文件夹是否存在,如果不存在则创建此文件夹

$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

于 2013-06-20T12:18:13.853 回答
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..

于 2016-09-09T09:33:34.640 回答
0

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

于 2019-06-03T09:01:40.843 回答
0
$dir = "folder_name".$filename;

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

于 2017-06-10T07:34:04.697 回答
-1

您必须使用反斜杠:

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

或者

    file_put_contents('K:\\Site\\images\\'.$filename, base64_decode($imgBase64));
于 2020-04-17T21:55:29.690 回答