2010-03-11 8 views
13

как я могу скопировать два раза один и тот же файл? Я пытаюсь сделать что-то вроде этого:PHP: как скопировать файл временного файла в несколько мест?

   copy($file['tmp_name'], $folder."1.jpg"); 
      copy($file['tmp_name'], $folder."2.jpg"); 
      copy($file['tmp_name'], $folder."3.jpg"); 

И сколько времени хранит временные файлы до того, как он будет уничтожен сервером?

Я также пытаюсь использовать файл move_uploaded_file, но я не могу заставить его работать. Я хочу создать 2 больших пальца из загруженного файла.

Некоторая помощь?

Спасибо,

ответ

27

move_uploaded_file переместит файл, а не копировать его - это значит, что это будет работать только один раз.

Если вы используете copy, то не должно быть никаких ограничений на количество копий времени: файл временного файла, созданный при загрузке, будет уничтожен только в конце выполнения вашего скрипта (если вы не переместить/удалить это раньше, конечно)


Тем не менее, возможно, решение было бы использовать move_uploaded_file первый, и, затем, copy?
Немного напоминает, что, я полагаю:

if (move_uploaded_file($file['tmp_name'], $folder . '1.jpg')) { 
    copy($folder . '1.jpg', $folder . '2.jpg'); 
    copy($folder . '1.jpg', $folder . '3.jpg'); 
} 

Это позволит вам получить чеки, предоставленные move_uploaded_file ...


Если это не сработает, то убедитесь, что:

  • $folder содержит то, что вы хотите - включая окончательное /
  • Это $file['tmp_name'] также содержит то, что вы хотите (я предполагаю, что это своего рода копия $_FILES - убедитесь, что копия $_FILES в $file сделано правильно)
+0

Спасибо, человек, вы даете мне свет. – ookla

4

Почему не move_uploaded_file() работа? Вы пытаетесь использовать его дважды? Вы не можете этого сделать, он перемещает его, поэтому второй раз не удастся.

я бы просто использовать move_uploaded_file() один раз, а затем сделать вторую копию с места вы только что переехали его:

move_uploaded_file($uploaded, $destination); 
copy($destination, $destination2); 
2

У меня нет ответа на ваш вопрос прямо, а как насчет этого обходного пути?

copy($file['tmp_name'], $folder."1.jpg"); 
copy($folder."1.jpg" , $folder."2.jpg"); 
copy($folder."1.jpg" , $folder."3.jpg"); 
1

Спасибо, человек, вы даете мне свет.

Я сделал что-то вроде этого:

$objUpload = new Upload(); 
    $filename = $objUpload->uploadFile($newFile,$folder); 
// returns a string  
    $objUpload->makeThumb($filename,$folder,"thumbs",139); 
// makes a 139px thumbnail from the original file uploaded on the first step 
    $objUpload->makeThumb($filename,$folder,"mini",75); 
// makes another thumb from the same file 

Использование move_ulploaded_file и копирования, мы можем сделать только один палец. :)