Newsgroup: it.comp.www.php
Titolo: problemi di upload file

OS: Windows Xp
Mi stavo esercitando sull'upload di un file da form ma non riesco ad
inviarlo.
Il NAME del FILE type è *uploadfile*.
Lo script di elaborazione, che adesso vi riporto sotto, dovrebbe
innanzitutto visualizzare:
1) il nome temporaneo del file
2) il nome originale del file
3) le dimensioni del file
4) il tipo di file
...ma non li visualizza
In secondo luogo copiare il file sulla stessa cartella dove risiede il file
del form, invece ho il seguente messaggio di avviso:
Warning: Unable to open '' for reading: Permission denied in
c:\php\uploadit.php on line 24
SCRIPT:
<html>
<body>
<?php
echo "<pre>";
echo "nome del file locale creato dopo l'invio: $uploadfile\n";
echo "nome originale del file remoto: $uploadfile_name\n";
echo "dimensioni del file in byte: $uploadfile_size\n";
echo "tipo di file: $uploadfile_type\n";
echo "</pre>";
echo "<hr>";
# abbiamo veramente un file?
if ($uploadfile == "none") {
echo "Non è stato inviato alcun file<br>";
echo "Ritorna al form per inviare il <a href=\"upload.html\">file</a>";
exit;
}
# controlla innanzitutto le dimensioni del file
if ($uploadfile_size < 3072) {
if (copy($uploadfile, "$uploadfile_name")) {
echo "Invio del file riuscito";
# cancella il file temporaneo
unlink($uploadfile);
} else {
echo "Invio del file fallito";
}
} else {
echo "Spiacente, il file da inviare non deve superare le dimensioni di
3KB<br>";
}
?>
Ritorna al form per inviare i <a href="upload.html">file</a>
</body>
</html>

 inviarlo.
Inizia con questo codice:
http://www.php.net/manual/en/features.file-upload.php#AEN6662
-- 
I am what I am, I do what I can
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
L'uomo, conscio di sbagliare, persevera.

 
http://www.php.net/manual/en/features.file-upload.php#AEN6662
Ti ringrazio per la segnalazione, sono andato a vedere ma, come sospettavo,
non sono riuscito a capire. Non so ad esempio cosa devo mettere al posto di
'userfile' né di 'name' o 'tmp_name', non conosco la funzione move_uploaded
_file(), né so cosa sia print_r...
Insomma, sto studiando su un libro e seguendo un percorso didattico che mi
rende difficile seguire la strada dell'insegnamento per "manuale".
ciao e grazie cmq

 n  so cosa sia print_r...
http://www.php.net/print_r


php v.4.2.3 sotto WinXp
Ho provato questo codice
(
http://www.webmasterpoint.org/php/tips/system_01.asp?id=1095&voto=3&cat=gui
da&dat=17.35.59) adattandolo al pc in locale
<?
 // Questo script effettua l'upload di un file!
  $dimensione = "10240";     # in bytes
  $dove_lo_faccio_l_upload = "c:\\php\\file";
 if (!$lu_file) {
  echo '
  <html>
   <head>
    <title>Untitled</title>
   </head>
   <body>
     <form ENCTYPE="multipart/form-data" ACTION="'.$PHP_SELF.'" METHOD=POST>
     <input TYPE="hidden" name="MAX_FILE_SIZE" value="'.$dimensione.'">
     Send this file: <INPUT NAME="lu_file" TYPE="file">
     <INPUT TYPE="Submit" VALUE="Send File">
     </form><br>
     Puoi fare upload di file non più grandi di '.($dimensione / 1024).'
KB<br>
   </body>
  </html>';
 } else {
   if (!@copy($lu_file, $dove_lo_faccio_l_upload. "\\"
         .$lu_file_name)) {
     echo "C'e' qualcosa che non va!<br>Ricontrolla!";
   } else {
     echo "Upload effettuato con successo!";
   }
 }
?>
e non prova neanche a copiarlo, ricarica il form come se php non avesse
creato nessun $lu_file. Ho forse qualche problema di configurazione?
ps: ho provato anche il tuo codice e mi dà l'output (credo corretto)
dell'array "$file_field":
Array
(
    [file_field] => Array
        (
            [name] => nomi.txt
            [type] => text/plain
            [tmp_name] => C:\WINDOWS\TEMP\php32.tmp
            [error] => 0
            [size] => 150
        )
)

 configurazione?
Il problema e' sempre lo stesso, sono stufo anche di riportarlo.
http://www.php.net/register_globals
[quoto dal manuale]
The Variables defined for uploaded files differs depending on the PHP
version and configuration. The autoglobal $_FILES exists as of PHP
4.1.0 The $HTTP_POST_FILES array has existed since PHP 4.0.0. These
arrays will contain all your uploaded file information. Using $_FILES
is preferred. If the PHP directive register_globals is on, related
variable names will also exist. register_globals defaults to off as of
PHP 4.2.0.
...
When register_globals is turned on in php.ini, additional variables are
available. For example, $userfile_name will equal
$_FILES['userfile']['name'], $userfile_type will equal
$_FILES['userfile']['type'], etc. Keep in mind that as of PHP 4.2.0,
register_globals defaults to off. It's preferred to not rely on this
directive.
[/quoto]
Sei un newbie? Leggi questo 
http://url.repository.biz/go/3C
-- 
I am what I am, I do what I can
Vuoi supportarmi? 
http://url.repository.biz/go/3E


 $_FILES['userfile']['type'], etc. Keep in mind that as of PHP 4.2.0,
Ci sono riuscito! :-)
$uploadfile = $_FILES['uploadfile']['tmp_name'];
$uploadfile_name = $_FILES['uploadfile']['name'];
$uploadfile_size = $_FILES['uploadfile']['size'];
$uploadfile_type = $_FILES['uploadfile']['type'];
Scusa, ma pensavo che 'tmp_name' 'name' 'size' 'type' dovessi sostituirli
con qualcosa. Mi ero scoraggiato perchè non sapevo quindi da dove partire.
Ti ringrazio moltissimo, c'è mancato poco che ti scappava la pazienza eh?!
;-) pardon!
ciao
Mosquito

 Ci sono riuscito! :-)
E perche' non utilizzi direttattamente $_FILES['uploadfile']? Comunque
sarebbe stato sufficiente impostare register_globals ad on.


 sarebbe stato sufficiente impostare register_globals ad on.
Aiuto impazzisco... O_O
$_FILES['uploadfile'] non funge, nel senso che come risposta mi dà *Array*
Non ho impostato le register global su *on* xché da quanto so non è prudente
per ragioni di sicurezza, o sbaglio?
Setec... ricorda che *la pazienza è la virtù dei forti* Stonk!

 Array
Ed infatti e' corretto. Il mio suggerimento era di evitare di definire
4 nuove variabili
$uploadfile = $_FILES['uploadfile']['tmp_name'];
$uploadfile_name = $_FILES['uploadfile']['name'];
$uploadfile_size = $_FILES['uploadfile']['size'];
$uploadfile_type = $_FILES['uploadfile']['type']; 
ed utilizzare direttamente nel tuo codice i valori contenuti in
$_FILES['uploadfile'].
