upload and resize

ciao ho uno script che mi fa l'upload e funziona ho aggiunto il codice per fare il resize ma non lo legge completamente, come se non ci fosse sono funzioni che richiamano la libreria GD mi aiutate a farlo funzionare?? questo è il codice:

<?php
if ($HTTP_POST_VARS['submit']) {
   //print_r($HTTP_POST_FILES);
   if (!is_uploaded_file($HTTP_POST_FILES['file']['tmp_name'])) {
      $error = "You did not upload a file!";
      unlink($HTTP_POST_FILES['file']['tmp_name']);
      // assign error message, remove uploaded file, redisplay form.
   } else {
      //a file was uploaded
      $maxfilesize=700000;
      if ($HTTP_POST_FILES['file']['size'] > $maxfilesize) {
         $error = "file is too large";
         unlink($HTTP_POST_FILES['file']['tmp_name']);
         // assign error message, remove uploaded file, redisplay form.
      } else {
         if ($HTTP_POST_FILES['file']['type'] != "image/gif" AND $HTTP_POST_FILES['file']['type'] != "image/pjpeg" AND $HTTP_POST_FILES['file']['type'] != "image/jpeg") { 
            $error = "This file type is not allowed";
            unlink($HTTP_POST_FILES['file']['tmp_name']);
            // assign error message, remove uploaded file, redisplay form.
         } else {
                        
            $image = $HTTP_POST_FILES['file'];
            echo '<br>Height: ' . imagesy($image) . ' pixels<br>';
            echo 'Width: ' . imagesx($image) . ' pixels<br>';
            
            // Get original width and height
            $width = imagesx($image);
            $height = imagesy($image);

            // New width and height
            $new_width = 150;
            $new_height = 100;

            // Resample
            $image_resized = imagecreatetruecolor($new_width, $new_height);
            imagecopyresampled($image_resized, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
            
            
            copy($HTTP_POST_FILES['file']['tmp_name'],"foto/".$HTTP_POST_FILES['file']['name']);
            unlink($HTTP_POST_FILES['file']['tmp_name']);
            print "File has been successfully uploaded!";
            exit;
         }
      } 
   }
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento senza titolo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data">
<?=$error?>
<br>
<br>
Choose a file to upload:<br>
<input type="file" name="file"><br>
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>
inviato 9 anni fa
cyb
cyb
1
X 0 X

In che senso come se non ci fosse?

A che punto si ferma? Riesce a visualizzare le dimensioni?

risposto 9 anni fa
LonelyWolf
X 0 X

no non visualizza nemmeno le  dimensioni originali

questa riga sicuramente è sbagliata:

$image = $HTTP_POST_FILES['file'];

ho provato anche col nome del campo di upload $file

ma

echo '<br>Height: ' . imagesy($image) . ' pixels<br>';
echo 'Width: ' . imagesx($image) . ' pixels<br>';

non mi stampa niente

risposto 9 anni fa
cyb
cyb
1
X 0 X

Che versione di PHp stai usando? successiva alla 4.1.0? Se si è meglio usare $_FILES.

$image = $_FILES['file']['tmp_name'];

così lavori sul file temporaneo che è stato caricato

risposto 9 anni fa
LonelyWolf
X 0 X

si grazie ma niente l'upload funziona ,non vanno le funzioni che si riferiscono alle librerie GD cioè il resize

risposto 9 anni fa
cyb
cyb
1
modificato 9 anni fa
X 0 X

Quindi sei sicuro che $image "contiene" effettivamente la tua immagine?

risposto 9 anni fa
LonelyWolf
X 0 X

non so proprio questo! ho provato a dare ad image il nome del campo  file o il nome provvisorio del file caricato o il nuovo nome ma niente

risposto 9 anni fa
cyb
cyb
1
X 0 X

Magari non ha i permessi per lavorare sul file temporaneo, prima spostalo nella cartella e poi aprilo per il resize.

risposto 9 anni fa
LonelyWolf
X 0 X

ho provato così ma quando gli chiedo le dimensioni non mi stampa niente.

copy($HTTP_POST_FILES['file']['tmp_name'],"foto/".$HTTP_POST_FILES['file']['name']);
unlink($HTTP_POST_FILES['file']['tmp_name']);
$image = "foto/".$HTTP_POST_FILES['file']['name'];
echo '<br>Height: ' . imagesy($image) . ' pixels<br>';
echo 'Width: ' . imagesx($image) . ' pixels<br>';
risposto 9 anni fa
cyb
cyb
1
X 0 X

copy?

Fallo così:

$image = "./foto/".$_FILES['file']['name'];
if (move_uploaded_file($_FILES['file']['tmp_name'], $image)) {
    $image = "./foto/".$_FILES['file']['name'];
    echo '<br>Height: ' . imagesy($image) . ' pixels<br>';
    echo 'Width: ' . imagesx($image) . ' pixels<br>';
}
risposto 9 anni fa
LonelyWolf
modificato 9 anni fa
X 0 X

Ma che tonto che sono! dopo tutto questo tempo ancora non mi ero accorto.

Dov'è che apri l'immagine?

per le jpg:

$image = imagecreatefromjpeg(" ./foto/".$_FILES['file']['name']);

Per le gif: imagecreatefromgif

risposto 9 anni fa
LonelyWolf
X 0 X

grazie lonelywolf!!ho provato poi con questo codice e ora funziona!!

copy($HTTP_POST_FILES['file']['tmp_name'],"foto/".$HTTP_POST_FILES['file']['name']);
            unlink($HTTP_POST_FILES['file']['tmp_name']);
            
            $dir=opendir('foto');
            $foto=array();
            
            while ($fname=readdir($dir)){
               if(preg_match("/[.]jpg$/",$fname)){
                  $foto[]=$fname;
                  
               }
            }
            closedir($dir);
            
            
            foreach($foto as $fname){
               $im=imagecreatefromjpeg("foto/$fname");
               
               $ox=imagesx($im);
               $oy=imagesy($im);
               
               $nx=100;
               $ny=100;
               
               $nm=imagecreatetruecolor($nx,$ny);
               //imagecopyresized($nm,$im,0,0,0,0,$nx,$ny,$ox,$oy);
               imagecopyresized($nm,$im,0,0,0,0,$nx,$ny,$ox,$oy);
               
               print "Creating thumb for $fname\n";
               imagejpeg($nm,"thumbs/$fname");
               }
               print "Creating index2.html\n";
               ob_start();
               
            
            print "File has been successfully uploaded!";
            exit;

:bye:

risposto 9 anni fa
cyb
cyb
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda