2013-03-15 103 views
0

我有一个简单但令人难以置信的问题。如何复制子目录/文件夹中的内容?

我有一个PHP代码创建两个directorires:

mkdir("uploads", 0777); // Create Folder 
mkdir("uploads/input", 0777); // Create Folder 

和上面的代码创建的文件夹说。然后我有另一个PHP代码复制图像文件到上传/输入和图像被复制。

同样,我有一个upload.php的PHP代码将文件复制到Dropbox的:

$dirtocopy = '/uploads/output/'; 
$dropboxdir = '/Public/backupdir/'; 

当我运行Dropbox的框代码它不会复制/上传/输出/和error_log中给出了我下面的:

PHP Warning: opendir(/uploads/output/) [<a href='function.opendir'>function.opendir</a>]: failed to open dir: No such file or directory in /home5/../upload.php on line 9 

虽然当我改变父$dirtocopy = '/uploads/output/';$dirtocopy = './';它复制所有文件,除了文件夹!

我觉得我的问题在于$dirtocopy

谢谢。

+2

相对路径不应该以'/'开头,或者以'/'开始时它必须有点(s) – 2013-03-15 20:18:17

+0

'/ uploads/output'相当于'c:\ uploads \ output'。如果你有'上传/输出'(不带前导斜杠),它会是'c:\ where \ your \ script \ execution \ uploads \ output'。 – 2013-03-15 20:20:44

+0

我试过它部分工作,但复制上传/输出中的文件,但不复制**文件夹及其内容**在上传/输出内 – maltadolls 2013-03-15 20:32:01

回答

0

变化

$dirtocopy = '/uploads/output/'; 

$dirtocopy = 'uploads/output/'; 

,它应该工作?

+0

我试过了,但它再次复制上传/输出中的文件,但不复制上传/输出中的文件夹。 – maltadolls 2013-03-15 20:26:08

+0

error_log告诉我_'File'uploads/output/yahoo'不存在或不可读。'当我手动将权限更改为777内的所有文件和目录时。 – maltadolls 2013-03-15 21:01:46

0

你只说你想移动上传的图像,而不是保存在文件夹中的图像(我得到这个印象)。

您有几个选项,一个是循环遍历/ uploads/input中的目录名称,在输出文件夹中动态创建一个新目录,然后复制这些文件。如果需要(听起来像是这样),然后复制/ uploads/input中的文件。

但这很复杂,而且您正在使用用户上传的文件。你采取了哪些措施来防止任何安全问题?你为什么要处理文件夹和图片?

您应该对通过代码提交的内容有100%的控制权,以避免不一致,并且在涉及到此问题时可以让自己更轻松。我建议您充分了解您正在尝试做的事情,然后可能会向我们发送更多代码。

+0

如何修改 - $ dirtocopy ='/ uploads/output /';包括文件夹,比如说$ dirtocopy ='/ uploads/output/folder1'; $ dirtocopy ='/ uploads/output/folder2'; $ dirtocopy ='/ uploads/output/folder3'; – maltadolls 2013-03-15 21:06:52

相关问题