Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-将文件移动到服务器上的其他文件夹中_Php_Directory_Move_Unlink - Fatal编程技术网

PHP-将文件移动到服务器上的其他文件夹中

PHP-将文件移动到服务器上的其他文件夹中,php,directory,move,unlink,Php,Directory,Move,Unlink,我需要允许我的网站上的用户删除他们的图像后,他们上传他们的服务器,如果他们不再需要他们。我以前在PHP中使用了unlink函数,但后来有人告诉我,这可能非常危险,而且是一个安全问题。(以前的代码如下:) 相反,我现在只想将文件移动到另一个文件夹中。这必须能够在他们首次上传文件后很长一段时间内完成,以便他们在任何时候登录到自己的帐户。如果我有存储用户图像的主文件夹: 然后在该文件夹中放置一个名为del的文件夹,该文件夹是放置不需要的图像的目标: user/del/ 是否有将文件移动到其他文件夹的

我需要允许我的网站上的用户删除他们的图像后,他们上传他们的服务器,如果他们不再需要他们。我以前在PHP中使用了
unlink
函数,但后来有人告诉我,这可能非常危险,而且是一个安全问题。(以前的代码如下:)

相反,我现在只想将文件移动到另一个文件夹中。这必须能够在他们首次上传文件后很长一段时间内完成,以便他们在任何时候登录到自己的帐户。如果我有存储用户图像的主文件夹:

然后在该文件夹中放置一个名为del的文件夹,该文件夹是放置不需要的图像的目标:

user/del/
是否有将文件移动到其他文件夹的命令?也就是说:

user/image1.jpg
移动到/成为

user/del/image1.jpg
使用该函数

rename("user/image1.jpg", "user/del/image1.jpg");

rename
函数执行此操作

rename('image1.jpg','del/image1.jpg')

如果要将现有文件保留在同一位置,应使用
copy

copy('image1.jpg','del/image1.jpg')

如果要移动已上载的文件,请使用
移动已上载的文件
,尽管这几乎与
重命名
相同,但此功能还检查给定文件是否是通过
POST
上载的文件,例如,这可防止移动本地文件


如果要在保留原始文件名的情况下将文件移动到新路径中,请从文档编码snipet

。使用以下命令:

$source_file = 'foo/image.jpg';
$destination_path = 'bar/';
rename($source_file, $destination_path . pathinfo($source_file, PATHINFO_BASENAME));

shell_exec('mv filename dest_filename')

一些解决方案是首先复制()文件(如上所述),当目标文件存在时,从以前的本地化中取消()文件的链接。此外,您可以在取消链接之前验证MD5校验和,以确保创建一个函数来移动它:

function move_file($file, $to){
    $path_parts = pathinfo($file);
    $newplace   = "$to/{$path_parts['basename']}";
    if(rename($file, $newplace))
        return $newplace;
    return null;
}
使用复制()取消链接()函数

$moveFile="path/filename";
if (copy($csvFile,$moveFile)) 
{
  unlink($csvFile);
}

我使用shell读取所有数据文件,然后分配给数组。 然后我将文件移动到顶部位置

i=0 
for file in /home/*.gz; do
    $file
    arr[i]=$file
    i=$((i+1)) 
done 
mv -f "${arr[0]}" /var/www/html/
使用此代码

function move_file($path,$to){
   if(copy($path, $to)){
      unlink($path);
      return true;
   } else {
     return false;
   }
 }

欢迎来到堆栈溢出!虽然这个代码片段可以解决这个问题,但它确实有助于提高文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!请进一步解释-如何使用PHP实现此功能?rename()和copy()的一个问题是您丢失了所有元数据,例如创建和修改的日期。。记住这一点,工作起来很有魅力。
$moveFile="path/filename";
if (copy($csvFile,$moveFile)) 
{
  unlink($csvFile);
}
i=0 
for file in /home/*.gz; do
    $file
    arr[i]=$file
    i=$((i+1)) 
done 
mv -f "${arr[0]}" /var/www/html/
function move_file($path,$to){
   if(copy($path, $to)){
      unlink($path);
      return true;
   } else {
     return false;
   }
 }