【问题标题】:How to copy files referenced in array?如何复制数组中引用的文件?
【发布时间】:2014-04-20 14:42:36
【问题描述】:

我有以下带有文件名的数组。数组保存在 var $files 下。

array ( 
 [0] => DSC02425.jpg 
 [1] => DSC02426.jpg 
 [2] => DSC02432.jpg 
 [3] => DSC02437.jpg 
) 

我想将这些文件从一个文件夹复制到另一个文件夹,但我该如何实现呢? 我做了一个函数,但它不起作用:

function copyFiles($array) {
    for ($i = 0;$i < count($array);$i ++) {
        copy("./" . $array[$i] , "/$folderlabel/" . $array[$i]);
    }
}

copyFiles($files);

【问题讨论】:

  • “不工作”是什么意思? (不)发生了什么?您收到任何错误消息?
  • 对不起,这是错误:Warning: copy(//KG002-DSC02425.jpg): failed to open stream: Permission denied in /volume1/web/www/pindex/index.php
  • 那么,从错误中学习并尝试纠正它,首先确保您确实有权访问给定的文件夹/文件...
  • ...并将其包含在您的原始帖子中,请确保添加它是一个编辑,否则已经给出的答案可能会过时...

标签: php arrays for-loop while-loop copy


【解决方案1】:

修正函数:

function copyFiles($array,$sourcePath,$savePath) {
for($i = 0;$i < count($array);$i++){
    copy($sourcePath.$array[$i],$savePath.$array[$i]);}
}

【讨论】:

  • 不要使用global。将其作为函数参数传递:function copyFiles($array,$folderlabel) { ... },然后像这样调用您的函数:copyFiles($files, $folderlabel);。请参阅 this answer 了解为什么 globals 是邪恶的。
  • 是的,让它成为一个参数。以及开头(“./”),因此您可以指定函数操作的工作目录。否则如果你的脚本是从不同的工作目录调用的,它会再次崩溃。
  • @user2987790:还要注意copy 有一个返回值。检查并处理错误。
猜你喜欢
  • 1970-01-01
  • 2022-06-15
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多