如果文件夹B中不存在,请使用文件夹A中的文件

时间:2012-03-26 04:40:42

标签: php directory

2个文件夹。如果文件夹B中的文件不存在,则从文件夹A中取出文件。

我们有文件夹A

fotos
->pic1.png
->pic2.png
theme
->reset.css
->index.php
->folder
->...
index.php
style.css

文件夹B

用户保存个人更改的位置。所以这里的文件从1变为全部,例如她/他只更改了2个文件:

fotos
->pic1.png
->style.css

如果文件夹B中没有文件/文件夹,我们不想复制整个文件夹。

如何以递归方式完成此操作,是否有与之相关的术语?

我会使用RecursiveDirectoryIterator但是如何:将两个目录加载到数组中,然后将优先级合并到文件夹B不起作用,因为它们具有不同的索引。 最后,复制有关资源的整个文件夹可能更好(空间不像内存那么大吗?)

编辑:

不同的目标,但有些并行here。到目前为止无法让它工作,谢谢你的回答。我更喜欢mod_rewrite ...如果它是一个有效的潜在解决方案...在使用太资源密集的PHP函数之前。

编辑2:

mod_rewrite甚至可以实现这一点吗?我想动态地制作它,因为它应该适用于所有用户。 结构如下或必要时可以更改:

FOLDER A: 
www/sources/folder A1
www/sources/folder A2
...

FOLDER B: (this are the user's individual Folders)
www/userfiles/folder A1/folder B1
www/userfiles/folder A1/folder B2
...
www/userfiles/folder A2/folder B1
www/userfiles/folder A2/folder B2
...

感谢任何光明的人......请。

2 个答案:

答案 0 :(得分:0)

如果你有每个图片请求指向输出它们的php脚本,你可以在尝试输出文件之前使用一个简单的file_exists语句。

如果你真的很懒,可以在include路径(http://www.php.net/manual/en/ini.core.php#ini.include-path)中添加两个文件夹,并使用file_get内容并将use_include_path标志设置为true来加载图像。它会先尝试在一个文件夹中打开文件,然后再打开另一个文件夹。但要小心,因为如果它没有在那些中找到它,它将开始查看其他包含文件夹,一些不道德的用户可能会尝试利用它。

答案 1 :(得分:-2)

获取文件夹A上的文件

转到文件夹B的路径

 if(!file_exists($file)){
   //set the path to get the files in the folder or merge the unique files
 }

如果需要,可以使用scan_dir或任何其他功能