PDA

View Full Version : php upload immagini help!


SteR9
03-06-2004, 16:24
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

SteR9
03-06-2004, 17:06
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?

cionci
03-06-2004, 17:36
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

cionci
03-06-2004, 17:57
: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

SteR9
03-06-2004, 18:40
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 :)

cionci
03-06-2004, 18:57
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 &egrave stato inviato");
}
}
break;
}

SteR9
03-06-2004, 20:24
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:

SteR9
04-06-2004, 18:27
UP :cry:

cionci
04-06-2004, 18:34
Prova a copiare il file in questo modo:

"'$nomefile'"

In pratica doppio doppioapice-apice-nomefile-apice-doppioapice

SteR9
04-06-2004, 19:00
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ì?

cionci
04-06-2004, 19:02
No...ho detto una stronzata :(

cionci
04-06-2004, 19:03
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...

SteR9
04-06-2004, 21:21
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?

cionci
05-06-2004, 02:39
A me funziona bene sia con IIS che con Apache :boh:

SteR9
05-06-2004, 07:22
Originariamente inviato da cionci
A me funziona bene sia con IIS che con Apache :boh:
allora è proprio un mistero :muro: :muro:
tu hai ntfs?

cionci
05-06-2004, 08:36
Certo...
Con IIS ho problemi se vado a sovrascrivere un file già essistente... Magari il file c'è già nella dir...

VICIUS
05-06-2004, 10:12
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 &egrave 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