2010-03-11 5 views
13

Wie kann ich zweimal die gleiche Datei kopieren? Ich versuche, etwas in der Art zu tun:PHP: Wie kopiere ich einen temporären Dateiupload an mehrere Orte?

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

Und wie viele Zeit hat temporäre Dateien, bevor es vom Server zerstört wird?

Ich versuche auch mit move_uploaded_file, aber ich kann es nicht funktionieren. Ich möchte 2 Thumbs aus einer hochgeladenen Datei generieren.

Einige Hilfe?

Danke,

Antwort

27

move_uploaded_file wird die Datei, und nicht kopieren Sie sie bewegen - was bedeutet, werde es nur einmal.

Wenn Sie copy verwenden, sollte es keine Begrenzung für die Anzahl der Kopiervorgänge geben: Die durch den Upload erstellte temporäre Datei wird erst am Ende der Ausführung Ihres Skripts zerstört. (wenn Sie es vor bewegen/löschen, natürlich)


Dennoch vielleicht eine Lösung sein würde move_uploaded_file zuerst zu verwenden, und dann copy?
Ein bisschen wie das, nehme ich an:

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

Diese Sie die Kontrollen durch move_uploaded_file ...

zur Verfügung gestellt zu bekommen erlauben würde


Wenn dies nicht funktioniert, dann stellen Sie sicher, dass:

  • $folder enthält, was Sie wollen - einschließlich der abschließenden /
  • That $file['tmp_name'] enthält auch das, was Sie wollen (Ich vermute, das eine Art Kopie von $_FILES ist - stellen Sie sicher, dass die Kopie von $_FILES-$file richtig gemacht wird)
+0

Danke Mann, du gibst mir das Licht. – ookla

4

Warum funktioniert move_uploaded_file() Arbeit? Versuchen Sie es zweimal zu verwenden? Sie können das nicht tun, es bewegt es, so dass das zweite Mal fehlschlagen wird.

Ich würde nur move_uploaded_file() einmal verwenden und dann die zweite Kopie machen von dem Ort, den Sie gerade bewegt es an:

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

Ich habe keine Antwort auf Ihre Frage direkt, sondern wie über dieses Problem zu umgehen?

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

Danke Mann, Sie geben mir das Licht.

Ich habe so etwas wie dies:

$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 

Mit move_ulploaded_file und kopieren wir nur einen Daumen machen. :)

Verwandte Themen