Foros del Web » Programando para Internet » PHP »

Al subir archivo a mi servidor.....!!!!

Estas en el tema de Al subir archivo a mi servidor.....!!!! en el foro de PHP en Foros del Web. Hola amigos, cuando hago mi funcion en php, sobre subir un archivo de tipo imagen a mi servidor, buscar el archivo y cuando le pongo ...
  #1 (permalink)  
Antiguo 08/03/2005, 06:50
 
Fecha de Ingreso: diciembre-2004
Mensajes: 85
Antigüedad: 13 años
Puntos: 0
Pregunta Al subir archivo a mi servidor.....!!!!


Hola amigos, cuando hago mi funcion en php, sobre subir un archivo de tipo imagen a mi servidor, buscar el archivo y cuando le pongo enviar me muestra la lista de mis archivos que hay alli y sale debajo lo siguiente:

Apache/2.0.52 (Win32) mod_ssl/2.0.52 OpenSSL/0.9.7d PHP/5.0.2 Server at pcm3080.dti.supsi.ch Port 80

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\DOCUME~1\danny\LOCALS~1\Temp\phpAE.tmp' to '' in C:\apachefriends\xampp\htdocs\Php\SUPSI\navigator\ moveup.php on line 7
error

y este es el codigo moveup.php

<?php
include ("http://pcm3080.dti.supsi.ch/Php/SUPSI/navigator/demo_rdf/Foto/");
$copiado=move_uploaded_file($uploadfile, $foto_name);
print $copiado;

if($copiado==false){
print "error";
}else{
print "ok";
}
?>

que estoy haciendo de malo??? espero me puedan ayudar
saludos
  #2 (permalink)  
Antiguo 08/03/2005, 08:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero de donde sale "$uploadfile" ..y $foto_name?
$copiado=move_uploaded_file($uploadfile, $foto_name);

print $copiado;
ahí no vas a ver nada .. dicha función devuelve un "boolean" TRUE o FALSE ..

Deberías usar los arrays superglobales $_FILES para acceder a tus archivos:

www.php.net/move_uploaded_file

Un saludo,
  #3 (permalink)  
Antiguo 08/03/2005, 08:33
 
Fecha de Ingreso: diciembre-2004
Mensajes: 85
Antigüedad: 13 años
Puntos: 0
ok, esta variable $uploadfile, viene de mi formulario que cargo anteriormente y se supone que aqui esta almacenado el archuvo y lo que quiero hacer es copiar ese archivo a una carperta y listo nada mas, pero no me sale, segu lo que esta abajo funciona y me dice ok, pero no lo copia, ??? espero me puedan ayudan.

<html>
...
<input type="file" name="uploadfile">
...
</html>



<?php
include ("http://pcm3080.dti.supsi.ch/Php/SUPSI/navigator/demo_rdf/Foto/");

$copiado=copy($uploadfile, $uploadfile);

if($copiado==false){
print "error";
}else{
print "ok";
}
?>
  #4 (permalink)  
Antiguo 08/03/2005, 09:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No, ... si tu nombre de tu campo "file" de tu formulario se llama "uploadfile" .. para efectos de copiar el archivo desde el directorio temporal que sube PHP vía HTTP los archivos hacia su destino definitivo es:

$uploadfile_tmp_name <-- directorio origen (que apunta a tu servidor y a un nombre temporal que PHP le dá al archivo que subió)
$uploadfile_name <-- nombre (sin ruta) original de tu archivo .. Tu tendrás que componer la ruta completa de destino

Pero .. NO USES! esa forma de acceso a tus archivos (no es segura) usa los arrays superglobales:

$_FILES['uploadfile']['tmp_name']
$_FILES['uploadfile']['name']

Y luego usa move_uploaded_file() en lugar de copy() ..

El archivo no se toma "físicamente" desde tu PC (del usuario/cliente) .. para hacer el "copy()" o "move_uploaded_file()". Es el "HTML" vía su campo file y el servidor HTTP el que "suben" el archivo a este .. Una vez allá .. a PHP se le deja en $_FILES una série de propiedades (como el nombre del archivo .. donde quedó en el servidor .. el tamaño, el tipo de archivo ...) para que las uses.


http://www.php.net/manual/en/features.file-upload.php
(lee la documentación; fijate en los ejemplos).

Un saludo,
  #5 (permalink)  
Antiguo 09/03/2005, 03:44
 
Fecha de Ingreso: diciembre-2004
Mensajes: 85
Antigüedad: 13 años
Puntos: 0
<?php

$uploaddir = 'http://pcm3080.dti.supsi.ch/Php/SUPSI/navigator/demo_rdf/Foto/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

print $uploadfile; // se encuentra la ruta y el archivo

$_FILES['uploadfile']['tmp_name'];
$_FILES['uploadfile']['name'];

echo '<pre>';
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
echo 'Here is some more debugging info:';
print_r($_FILES);
print "</pre>";
?>

Luego cuando lo ejecuto me sale lo siguiente pero el archivo no se llega almacenar:

http://pcm3080.dti.supsi.ch/Php/SUPS...o/DSCN1358.JPG

Possible file upload attack!
Here is some more debugging info:Array
(
[userfile] => Array
(
[name] => DSCN1358.JPG
[type] =>
[tmp_name] =>
[error] => 2
[size] => 0
)
)

espero me ayuden.
Gracias.
  #6 (permalink)  
Antiguo 09/03/2005, 06:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Esa ruta no es correcta:

$uploaddir = 'http://pcm3080.dti.supsi.ch/Php/SUPSI/navigator/demo_rdf/Foto/';

debes usar rutas absolutas . .no relativas:

Podría ser algo tipo:
$uploaddir =$_SERVER['DOCUMENT_ROOT']."/etc ......./";

Con la variable de servidor "DOCUMENT_ROOT" se obtiene la ruta física desde el raiz de ese servidor .. tal vez /var/www/sitio1 (típico de sistemas linux .. ) o para windows algo tipo: c:/nose/tal .... que es donde apunta tu "DocumentRoot" de tu servidor HTTP y ahí empieza a "colgar" tu sitio con tu resto de estructura de directorios que tenga.

Por lo demás .. NO te confundas ..
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

$_FILES['userfile'] .... es el nombre que le das a tu campo file de tu formulario HTML .. en tu caso parece que lo llamas "uploadfile" (como no se vé el formulario HTML que usas .. no sé que nombre le das) .. revisa eso y estate pendiente.

Un saludo,
  #7 (permalink)  
Antiguo 10/03/2005, 04:26
 
Fecha de Ingreso: diciembre-2004
Mensajes: 85
Antigüedad: 13 años
Puntos: 0
Este es mi formulario:

<form enctype="multipart/form-data" action="ejecu.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" />
</form>

Aqui enpieza mi archivo php, qe se llama ejecu.php

<?php
//esta es mi variable que esta en mi formulario $userfile;

$_FILES['userfile']['tmp_name'];
$_FILES['userfile']['name'];

$uploaddir =$_SERVER['DOCUMENT_ROOT']."/Php/SUPSI/navigator/demo_rdf/Foto/";

$uploadfile1 = $uploaddir . basename($_FILES['userfile']['tmp_name']);
echo '<pre>';
if (move_uploaded_file($_FILES['uploadfile1']['uploaddir'], $tmp_name)) {
echo "File is valid, and was successfully uploaded.\n";
} else {
echo "Possible file upload attack!\n";
}
echo 'Here is some more debugging info:';

print_r($_FILES);
print "</pre>";
?>

Bueno me encuentra la imagen pero no la sube al servidor, ya esta leyendo todo, probando y no sale, ayudenme con esto, les agradezco de antemano.
Saludos
  #8 (permalink)  
Antiguo 10/03/2005, 06:23
 
Fecha de Ingreso: marzo-2005
Mensajes: 13
Antigüedad: 12 años, 9 meses
Puntos: 0
Cita:
Iniciado por Dannydaniel
Este es mi formulario:


<input type="hidden" name="MAX_FILE_SIZE" value="30000" />

Hola,

he estado haciendo esto mismo hoy.
A ver si el problema va a ser el tamaño, que lo tienes limitado a 30.000 bytes,
prueba a aumentar este límite.

Saludos.
  #9 (permalink)  
Antiguo 10/03/2005, 06:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No sé si alcanzas a comprender que es $_FILES .. (pregunta si tienes dudas) .. Pero, esto no es correcto:

if (move_uploaded_file($_FILES['uploadfile1']['uploaddir'], $tmp_name)) {

En tal caso sería:

Código PHP:
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$_FILES['userfile']['name']) { 
Un saludo,
  #10 (permalink)  
Antiguo 10/03/2005, 07:23
 
Fecha de Ingreso: diciembre-2004
Mensajes: 85
Antigüedad: 13 años
Puntos: 0
bueno he hecho lo que me han dicho pero igual no funciona,cam,b
Sobre el tema de $_FILES , he leido lo que encontrado y lo he entiendo.

Ya no se que hacer para que funcione y pueda subir las imagenes a mi servidor.
Saludos
  #11 (permalink)  
Antiguo 11/03/2005, 00:44
 
Fecha de Ingreso: marzo-2005
Mensajes: 13
Antigüedad: 12 años, 9 meses
Puntos: 0
Cita:
Iniciado por Dannydaniel
bueno he hecho lo que me han dicho pero igual no funciona,cam,b
Sobre el tema de $_FILES , he leido lo que encontrado y lo he entiendo.

Ya no se que hacer para que funcione y pueda subir las imagenes a mi servidor.
Saludos


En esta página tienes la explicación de como se sube y el código necesario:

http://www.php.net/manual/es/features.file-upload.php

Quizás te aclare ver el contenido de las variables, añade este código a la página que recibe el fichero:


$ficheroname=$_FILES['userfile']['name'];
echo "El valor de -userfile- -name- es: $ficheroname <BR>";

$tipo=$_FILES['userfile']['type'];
echo "El valor de -userfile- -type- es: $tipo <BR>";

$size=$_FILES['userfile']['size'];
echo "El valor de -userfile- -size- es: $size <BR>";

$fichero_tmp=$_FILES['userfile']['tmp_name'];
echo "El valor de -userfile- -tmp_name- es: $fichero_tmp <BR>";

La salida que te tiene que dar es similar a esta:

El valor de -userfile- -name- es: bichosdvd.jpg
El valor de -userfile- -type- es: image/pjpeg
El valor de -userfile- -size- es: 387640
El valor de -userfile- -tmp_name- es: /tmp/phpAqH6hS


Ten en cuenta que el nombre del fichero que subes se almacena con un nombre temporal (en este caso /tmp/phpAqH6hS ) y es este el que tienes que mover o copiar. El fichero que subo es bichosdvd.jpg, pero no se almacena en el servidor con este nombre.

En la línea:
if (is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {
copy($HTTP_POST_FILES['userfile']['tmp_name'], "/place/to/put/uploaded/file");

cambia "/place/to/put/uploaded/file" por un directorio donde tengas permisos para escribir, por ejemplo en "/tmp/$_FILES['userfile']['name']" para copiarlo con el nombre que tenía el fichero en el origen.

Suerte.
  #12 (permalink)  
Antiguo 11/03/2005, 10:23
 
Fecha de Ingreso: diciembre-2004
Mensajes: 85
Antigüedad: 13 años
Puntos: 0
Muchas gracias amigos, ya logre subir el archivo a donde queria ponerla, con todas estas ayudas que me han dado.

Gracias y saludos a todos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 18:28.