Php 将文件移动到foreach循环中的目录中?
我不知道怎么做,需要你的帮助 我有一个名为$bundle的文件名数组。(文件1.jpg、文件2.pdf、文件3.etc) 我将文件夹的名称存储在$folder中。(my_目录) 我现在想将$bundle中存储的所有文件移动到$folder目录 我该怎么做Php 将文件移动到foreach循环中的目录中?,php,move,Php,Move,我不知道怎么做,需要你的帮助 我有一个名为$bundle的文件名数组。(文件1.jpg、文件2.pdf、文件3.etc) 我将文件夹的名称存储在$folder中。(my_目录) 我现在想将$bundle中存储的所有文件移动到$folder目录 我该怎么做 //print count($bundle); //(file_one.jpg, file_two.pdf, file_three.jpg) $folder = $folder = PATH . '/' . my_directo
//print count($bundle); //(file_one.jpg, file_two.pdf, file_three.jpg)
$folder = $folder = PATH . '/' . my_directory;
foreach ($bundle as $value) {
//rename(PATH.'/'.$value, $folder . '/' . $value);
}
这样就不会混淆了:PATH只存储了我在项目中使用的本地文件路径。在我的情况下,它只是我工作的文件夹,所以它是“文件”
我不知道我必须使用哪种方法来解决这个问题,以及如何解决这个问题
谢谢你的帮助 您给出的代码应该可以进行细微更改:
$folder = PATH . '/' . 'my_directory'; // enclose my_directory in quotes.
foreach ($bundle as $value) {
$old = PATH.'/'.$value, $folder;
$new = $folder . '/' . $value;
if(rename($old,$new) !== false) {
// renamed $old to $new
}else{
// rename failed.
}
}
您给出的代码应能进行细微更改:
$folder = PATH . '/' . 'my_directory'; // enclose my_directory in quotes.
foreach ($bundle as $value) {
$old = PATH.'/'.$value, $folder;
$new = $folder . '/' . $value;
if(rename($old,$new) !== false) {
// renamed $old to $new
}else{
// rename failed.
}
}
未经测试但应有效:
function bulkMove($src, $dest) {
foreach(new GlobIterator($src) as $fileObject) {
if($fileObject->isFile()) {
rename(
$fileObject->getPathname(),
rtrim($dest, '\\/') . DIRECTORY_SEPARATOR . $fileObject->getBasename()
);
}
}
}
bulkMove('/path/to/folder/*', '/path/to/new/folder');
无法添加一些检查以查看目标文件夹是否可写。如果不需要通配符匹配,请将
GlobIterator
更改为DirectoryIterator
。这也将消除对未经测试的PHP5.3的需求,但应该可以:
function bulkMove($src, $dest) {
foreach(new GlobIterator($src) as $fileObject) {
if($fileObject->isFile()) {
rename(
$fileObject->getPathname(),
rtrim($dest, '\\/') . DIRECTORY_SEPARATOR . $fileObject->getBasename()
);
}
}
}
bulkMove('/path/to/folder/*', '/path/to/new/folder');
无法添加一些检查以查看目标文件夹是否可写。如果不需要通配符匹配,请将
GlobIterator
更改为DirectoryIterator
。这也将消除对PHP5.3的需要您需要像在示例中一样使用重命名,在本示例中获得的内容设置得更详细一点,如果可能的话,添加更多的代码使其精确您需要像在示例中一样使用重命名,在本示例中获得的内容设置得更详细一点,如果可能的话,添加更多的代码使其精确谢谢您工作得很好,除了有没有一种简单的方法来处理目录?假设$bundle数组不仅包含文件,还包含目录。(file_one.jpg,directory1,file_two.pdf,另一个目录)我正在检查一个扩展名为$ext=pathinfo($value,pathinfo_)的文件夹;如果($ext==''){这是一个文件夹!!!我只需要一个函数或方法,让我移动包含所有内容的完整目录!?@mathi仅仅因为一个文件没有扩展名并不意味着它是一个文件夹。使用is\u dir
检查一个目录是否是一个目录。谢谢你工作得很好,除了有一种简单的方法可以对目录进行同样的操作吗?imag在$bundle数组中,不仅包含文件,还包含目录。(文件_one.jpg,directory1,文件_two.pdf,另一个目录)我正在检查一个扩展名为$ext=pathinfo($value,pathinfo_)的文件夹;如果($ext=''){这是一个文件夹!!!我只需要一个函数或方法,让我移动包含所有内容的完整目录!?@mathi仅仅因为一个文件没有扩展名并不意味着它是一个文件夹。使用is\u dir
检查一个目录是否是一个目录。