PHP: как скопировать файл временного файла в несколько мест?

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

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

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

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

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

Спасибо,

Ответ 1

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

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


Тем не менее, возможно, решение состояло бы в том, чтобы сначала использовать 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 выполнена правильно)

Ответ 2

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

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

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

Ответ 3

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

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

Ответ 4

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

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

    $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 и копию, мы можем сделать только один большой палец.:)