View Full Version : php upload immagini help!
ho creato un form dal quale vado a copiare un'immagine in una cartella del server,il problema è che l'immagine se per esempio si trova nella dir c:\documents and settings\utente\documenti dell'utente non me la carica,mentre se si trova ad esempio in c:\ viene copiata correttamente...per copiare l'immagine uso...
@copy("$img" , "avatars/".$usrname."$ext");
dove $img è l'immagine presa dal form tramite POST...quale potrebbe essere il problema?grazie..ciao!
lnessuno
03-06-2004, 16:31
copy("$uploadedfile", "$sezione/$uploadedfile_name")
io uso questo... provalo se vuoi, non avrei idea di quale può essere il motivo :p
Originariamente inviato da lnessuno
copy("$uploadedfile", "$sezione/$uploadedfile_name")
io uso questo... provalo se vuoi, non avrei idea di quale può essere il motivo :p
è la stessa cosa che faccio io :P
mi da questo errore
Warning: copy(C:\\Documents and Settings\\user\\Documenti\\Immagini\\imm
agine.jpg): failed to open stream: Permission denied in
penso sia un problema di ntfs possibile?
No...l'immagine devi uploadarla al server tramite l'input type file !!!
Comunque è sempre meglio consultare il manuale online di php (leggi i commenti degli utenti) ;)
http://it2.php.net/manual/en/features.file-upload.php
lnessuno
03-06-2004, 17:51
il codice del form quale è? :p
:confused: :)
file upload screen can be built by creating a special form which looks something like this:
Example 18-1. File Upload Form
<form enctype="multipart/form-data" action="_URL_" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
lnessuno
03-06-2004, 18:04
Originariamente inviato da cionci
:confused: :)
dicevo mica a te... :D non avevo visto la tua risposta è tutto nel sito che hai linkato :) :p
avevo già visto sul sito di php...ma non riesco a farlo andare...il file lo devo ricevere con $_file? e poi non capisco cosa gli devo passare all'array che mi restituisce $_FILE...
ciao :)
SteR9: c'è già tutto il codice fatto nella pagina !!!
<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.
$uploaddir = '/var/www/uploads/';
$uploadfile = $uploaddir . $_FILES['userfile']['name'];
print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
print "File is valid, and was successfully uploaded. ";
print "Here's some more debugging info:\n";
print_r($_FILES);
} else {
print "Possible file upload attack! Here's some debugging info:\n";
print_r($_FILES);
}
print "</pre>";
?>
lnessuno
03-06-2004, 19:32
questo è il mio script completo, se vuoi dargli un'occhiata... :p
<?
if (!$func) {
$func = "one";
}
switch ($func) {
case one:
echo "<form method=\"post\" enctype=\"multipart/form-data\" action=\"upload.php\">";
echo "Sezione:<br>";
echo "<select name=\"sezione\">";
echo "<option value=\"Sez1\">Sezione1</option>";
echo "<option value=\"Sez2\">Sezione2</option>";
echo "</select>";
echo "<input type=\"file\" name=\"uploadedfile\" size=\"30\">";
echo "<input type=\"hidden\" name=\"max_file_size\" value=\"200000\">";
echo "<input type=\"hidden\" name=\"func\" value=\"two\">";
echo "<input type=\"submit\" value=\"UPLOAD\">";
break;
case two:
if($uploadedfile<>"none") {
if(!copy("$uploadedfile", "$sezione/$uploadedfile_name")) {
print("Niente da fare, sorry...<br>");
print("$sezione/$uploadedfile_name");
}
else {
print("Fatta! il file è stato inviato");
}
}
break;
}
ho provato quello della documentazione di php e mi da sempre lo stesso problema...se il file si trova in un dir tipo documents and settings/user/documenti non lo uppa...se invece si trova ad esempio in c:\ lo uppa... non riesco proprio a capire perchè...:muro:
Prova a copiare il file in questo modo:
"'$nomefile'"
In pratica doppio doppioapice-apice-nomefile-apice-doppioapice
Originariamente inviato da cionci
Prova a copiare il file in questo modo:
"'$nomefile'"
In pratica doppio doppioapice-apice-nomefile-apice-doppioapice
move_uploaded_file($_FILES['userfile']['tmp_name'], "'$uploadfile'"))
così?
No...ho detto una stronzata :(
A questo pnto penso che sia un bug di IE altrimenti non ci sono spiegazioni... Il file al server web arriva senza il percorso originale... Prova un po' ad usare un altro browser...
niente..ho provato anche da mac...
allora..il form è questo
<form enctype="multipart/form-data" action="imcopy.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
e la pagina per uppare la foto è questa
<?
$uploaddir = 'G:\Inetpub\wwwroot\PHP\board\\';
$uploadfile = $uploaddir . $_FILES['userfile']['name'];
print "<pre>";
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
print "File is valid, and was successfully uploaded. ";
print "Here's some more debugging info:\n";
print_r($_FILES);
} else {
print "Possible file upload attack! Here's some debugging info:\n";
print_r($_FILES);
}
print "</pre>";
?>
potrebbe essere iis il problema?
A me funziona bene sia con IIS che con Apache :boh:
Originariamente inviato da cionci
A me funziona bene sia con IIS che con Apache :boh:
allora è proprio un mistero :muro: :muro:
tu hai ntfs?
Certo...
Con IIS ho problemi se vado a sovrascrivere un file già essistente... Magari il file c'è già nella dir...
Originariamente inviato da lnessuno
questo è il mio script completo, se vuoi dargli un'occhiata... :p
<?
if (!$func) {
$func = "one";
}
switch ($func) {
case one:
echo "<form method=\"post\" enctype=\"multipart/form-data\" action=\"upload.php\">";
echo "Sezione:<br>";
echo "<select name=\"sezione\">";
echo "<option value=\"Sez1\">Sezione1</option>";
echo "<option value=\"Sez2\">Sezione2</option>";
echo "</select>";
echo "<input type=\"file\" name=\"uploadedfile\" size=\"30\">";
echo "<input type=\"hidden\" name=\"max_file_size\" value=\"200000\">";
echo "<input type=\"hidden\" name=\"func\" value=\"two\">";
echo "<input type=\"submit\" value=\"UPLOAD\">";
break;
case two:
if($uploadedfile<>"none") {
if(!copy("$uploadedfile", "$sezione/$uploadedfile_name")) {
print("Niente da fare, sorry...<br>");
print("$sezione/$uploadedfile_name");
}
else {
print("Fatta! il file è stato inviato");
}
}
break;
}
Invece di mille mila echo perchè non usare una sola echo con sintassi heredoc ? Immagino che tu ti sia quasi ucciso a mettere tutte quelle backslash :D
lnes le " per one two. porca paletta continui a lascarle per strada :p
Le print sono leeente. usa delle echo.
ciao ;)
lnessuno
05-06-2004, 10:25
Originariamente inviato da VICIUS
Invece di mille mila echo perchè non usare una sola echo con sintassi heredoc ? Immagino che tu ti sia quasi ucciso a mettere tutte quelle backslash :D
lnes le " per one two. porca paletta continui a lascarle per strada :p
Le print sono leeente. usa delle echo.
ciao ;)
ho capito solo l'ultima frase, le altre due non so cosa significhino... :fagiano: su icq me lo devi poi spiegà :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.