2015-01-27 4 views
1

У меня есть форма для загрузки, и когда я выбираю файл, мне нужно, чтобы он был загружен в несколько папок. Все идеи, как это сделать? Я пробовал с такой петлей, как следующий:Загрузите тот же файл в несколько папок

foreach($_POST['check'] as $check){  
    move_uploaded_file($_FILES['doc']['tmp_name'], $target_path); 
    chmod($target_path,0777);  
} 

Но он загружается только один раз. Все идеи, пожалуйста?

+0

$ target_path должен существовать, иначе перед перемещением вы должны создать путь. Это для каждого пути, в который вы хотите переместить файл. – Masiorama

+1

@ Масиорама придумала .... ты действительно думаешь, что путь пуст? Я просто не написал весь код, потому что довольно легко поймать идею .... –

+0

Я могу судить только то, что вижу, не догадываюсь, что у вас на уме. Я боюсь, что этот вопрос широко распространен или вы получите больше «бесполезных» комментариев. – Masiorama

ответ

1

После загрузки скопируйте файл с целевого пути на другие пути с помощью copy().

foreach($_POST['check'] as $check){  
    move_uploaded_file($_FILES['doc']['tmp_name'], $target_path); 
    chmod($target_path,0777);  
    // and now... 
    copy($target_path, $target_path_2); 
    copy($target_path, $target_path_3); 
    // etc... 
} 

Кстати, установка 0777 для разрешений вообще не нужна и плохая идея. Вы хотите, чтобы кто-либо загружал файлы и позволял любому пользователю выполнять их? Это способ начать давать кому-либо полный контроль над вашей машиной.

Кроме того, вы уверены, что вам нужен файл на нескольких местах? Почему бы не создать одну общую папку хранения и создать символические ссылки на нее? Но это зависит от вашей настройки, конечно.

+0

Спасибо, что работает. Не волнуйтесь, я не позволяю кому-либо получить доступ к этому движку. –

+1

@PetruLebada большой. Хотя все же, старайтесь всегда иметь доступ к возможностям как можно более ограниченным, это хорошая практика. – Keelan

0
$i = 0; 
foreach($_POST['check'] as $check){ 
    $basePath = "/var/www/html/more/phpexm/"; 
    $target_path = $basePath . $check; 

    if (!file_exists($target_path)){ 
     mkdir($target_path, 0777); 
    } 

    if ($i == 0){ 
     $sFileNameTmp = $_FILES['doc']['tmp_name']; 
     $sFileName = $_FILES['doc']['name']; 
     move_uploaded_file($sFileNameTmp, $target_path . '/' . $sFileName); 
     $sFirstFileUploaded = $target_path; 
    } 
    else{ 
     copy ($sFirstFileUploaded . '/' . $sFileName, $target_path . '/' . $sFileName); 
    } 
    $i++; 
} 
+0

Я тестировал на своей машине linux – infotechvedas

+0

спасибо, но он работал только с одной копией() вместо move_uploaded_file –

Смежные вопросы