php 上传到两个不同的目录

php upload to two different directories

我目前正在使用下面的脚本上传到主目录,但是我需要这个来上传到下一级的第二个目录 (../../gfx/)。 有什么想法可以让这两个上传都起作用吗?

<?php

// If you want to ignore the uploaded files, 
// set $demo_mode to true;

$demo_mode = false;
$upload_dir = '../gfx/';
$allowed_ext = array('jpg','jpeg','png','gif');


if(strtolower($_SERVER['REQUEST_METHOD']) != 'post'){
 exit_status('Error! Wrong HTTP method!');
}


if(array_key_exists('pic',$_FILES) && $_FILES['pic']['error'] == 0 ){
 
 $pic = $_FILES['pic'];

 if(!in_array(get_extension($pic['name']),$allowed_ext)){
  exit_status('Only '.implode(',',$allowed_ext).' files are allowed!');
 } 

 if($demo_mode){
  
  // File uploads are ignored. We only log them.
  
  $line = implode('  ', array( date('r'), $_SERVER['REMOTE_ADDR'], $pic['size'], $pic['name']));
  file_put_contents('log.txt', $line.PHP_EOL, FILE_APPEND);
  
  exit_status('Uploads are ignored in demo mode.');
 }
 
 
 // Move the uploaded file from the temporary 
 // directory to the uploads folder:
 
 if(move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name'])){
  exit_status('File was uploaded successfuly!');
 }
 
}

exit_status('Something went wrong with your upload!');


// Helper functions

function exit_status($str){
 echo json_encode(array('status'=>$str));
 exit;
}

function get_extension($file_name){
 $ext = explode('.', $file_name);
 $ext = array_pop($ext);
 return strtolower($ext);
}
?>

您已经将其移动到一个位置:

if(move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name'])){
    exit_status('File was uploaded successfuly!');
}

只是 copy to another 之后。如果只有一个成功,您希望如何向用户报告由您决定。但是,例如,如果只有 "successful" 如果创建了 两个 文件,那么您可以 move/copy 像这样:

$success = move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name']);
$success = copy($upload_dir.$pic['name'], $another_dir.$pic['name']);

if ($success === true) {
    exit_status('File was uploaded successfuly!');
}

(当然,$another_dir 是您要将文件复制到的目录。)

您可以检查两次操作之间的错误,您可以仅在第一次操作后报告成功,如果第二次失败则仅在内部记录,等等。这取决于您。