2010-03-11 9 views
13

comment puis-je copier deux fois le même fichier? J'essaie de faire quelque chose comme ceci:PHP: comment copier un fichier temporaire en plusieurs endroits?

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

Combien de temps les fichiers temporaires ont-ils avant d'être détruits par le serveur?

J'essaie également d'utiliser move_uploaded_file, mais je n'arrive pas à le faire fonctionner. Je veux générer 2 pouces à partir d'un fichier téléchargé.

De l'aide?

Merci,

Répondre

27

move_uploaded_file se déplacera le fichier, et non le copier - ce qui signifie que ça va marcher qu'une seule fois.

Si vous utilisez copy, il ne devrait pas y avoir de limite sur le nombre de fois que vous pouvez copier: le fichier temporaire créé par le téléchargement ne sera détruit qu'à la fin de l'exécution de votre script (à moins que vous déplacer/supprimer avant, bien sûr)


encore, peut-être une solution serait d'utiliser move_uploaded_file d'abord, et, ensuite, copy?
Un peu comme ça, je suppose:

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

Cela vous permettra d'obtenir les contrôles prévus par move_uploaded_file ...


Si cela ne fonctionne pas, alors, assurez-vous que:

  • $folder contient ce que vous voulez - y compris la finale /
  • ce $file['tmp_name'] contient aussi ce que vous voulez (je devine que c'est une sorte de copie de $_FILES - assurez-vous que la copie de $_FILES-$file est fait correctement)
+0

Merci l'homme, vous me donnez la lumière. – ookla

4

Pourquoi ne pas move_uploaded_file() travail? Essayez-vous de l'utiliser deux fois? Vous ne pouvez pas faire cela, il le déplace, donc la deuxième fois échouera.

Je voudrais simplement utiliser move_uploaded_file() une fois, puis faire la deuxième copie de l'endroit où vous venez de le déplacer à:

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

Je n'ai pas de réponse à votre question directement, mais que diriez-vous cette solution de contournement?

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

Merci l'homme, vous me donnez la lumière.

je fait quelque chose comme ceci:

$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 

En utilisant move_ulploaded_file et copie, nous pouvons faire un seul pouce. :)

Questions connexes