2009-06-13 9 views
0

Je suis en train de jouer avec l'image Resizer et je suis arrivé le code suivantComment rendre la vignette accessible à/tmp/thumb/et conserver l'image originale sur/tmp/avec Image Resizer?

if (is_uploaded_file(@$_FILES['ulimage']['tmp_name'])){ 
     $targetfilename = ImageHelper::treatFilename(uniqid() . "_" . $_FILES['ulimage']['name']); 
     move_uploaded_file($_FILES['ulimage']['tmp_name'], dirname(__FILE__) . "/tmp/" . $_FILES['ulimage']['name']); 
     ImageHelper::resizeImage(dirname(__FILE__) . "/tmp/" . @$_FILES['ulimage']['name'], dirname(__FILE__) . "/tmp/" . $targetfilename, $width, $height); 
    } 

Pour l'instant, l'image originale et la vignette placera dans le même dossier.

Laissez-moi savoir ..

Source

+0

Men, un titre comme celui-ci n'est pas vraiment excusé. Pouvez-vous penser à quelque chose de plus lié à votre question? –

+0

ok .. laissez-moi savoir ce que le meilleur pour le titre .. – wow

+0

Vous avez eu la question dans votre corps, je l'ai déplacé vers le titre. –

Répondre

2

Eh bien, la réponse est:

if (is_uploaded_file(@$_FILES['ulimage']['tmp_name'])) 
{ 
     $targetfilename = ImageHelper::treatFilename(uniqid() . "_" . $_FILES['ulimage']['name']); 
     move_uploaded_file($_FILES['ulimage']['tmp_name'], dirname(__FILE__) . "/tmp/" . $_FILES['ulimage']['name']); 
     ImageHelper::resizeImage(dirname(__FILE__) . "/tmp/" . @$_FILES['ulimage']['name'], dirname(__FILE__) . "/tmp/thumb/" . $targetfilename, $width, $height); 
} 

Mais peut-être que vous voulez comprendre un peu le code que vous copiez et passé du Net avant de l'utiliser. Utiliser $ _ vars sans échapper le système et avec @ pour cacher l'erreur n'appelle pas vraiment à la confiance ...

EDIT: Je donne des conseils, mais peut-être vaut-il mieux donner quelques explications.

// first you check if the is done uploading in the tmp directory with is tmp name 
if (is_uploaded_file(@$_FILES['ulimage']['tmp_name'])) 
{ 
    // here, you rebuild a explicit name using the original filename and a 
    // unique ID to avoid erasing another one 
    $targetfilename = ImageHelper::treatFilename(uniqid() . "_" . $_FILES['ulimage']['name']); 

    // you rename the file an put it in ./tmp, a subdir of the 
    // script file (because of dirname(__FILE__)) 
    move_uploaded_file($_FILES['ulimage']['tmp_name'], dirname(__FILE__) . "/tmp/" . $_FILES['ulimage']['name']); 

    // Here create a rezided copy 
    // so it's here you can decide to make it go to ./tmp/thumb 
    // make sure the dir exists before because you have no clue here 
    // if ImageHelper will create it for you if not 
    ImageHelper::resizeImage(dirname(__FILE__) . "/tmp/thumb/" . @$_FILES['ulimage']['name'], dirname(__FILE__) . "/tmp/thumb/" . $targetfilename, $width, $height); 
} 
+0

J'ai essayé .. pouce pas créé dans "/ tmp/thumb /" seule taille originale générée. – wow

+0

Comme je l'ai écrit, "assurez-vous que le répertoire existe avant parce que vous n'avez aucune idée ici si ImageHelper le créera pour vous si ce n'est pas le cas." Vous pouvez le faire avec mkdir: http://fr.php.net/manual/fr/ function.mkdir.php –

+0

merci pour votre explication au code .. merci .. oui dossier créé (777) mais la vignette ne vient pas trop – wow

0

Hey man, cela semble très difficile, mais peut être fait simplement en utilisant la bibliothèque Thumbnailer et son assistant de téléchargement:

function callback(& $thumb) { 
    $thumb->thumbSquare(100)->save("/tmp/thumb/".$thumb->filename); 
} 

Thumbnailer::upload('ulimage', 'callback'); 

Très facile :)