Foros del Web » Programando para Internet » PHP »

Upload File

Estas en el tema de Upload File en el foro de PHP en Foros del Web. Hola una pregunta hay alguna forma de subir un archivo al servidor y colocarlo en una carpeta especifica sin usar el nombre temporal, debido a ...
  #1 (permalink)  
Antiguo 11/04/2005, 12:41
 
Fecha de Ingreso: enero-2005
Mensajes: 43
Antigüedad: 12 años, 11 meses
Puntos: 0
Upload File

Hola una pregunta hay alguna forma de subir un archivo al servidor y colocarlo en una carpeta especifica sin usar el nombre temporal, debido a que el servidor que uso tiene ciertas restricciones, lo cual no me deja tocar el temp.

Gracias.
  #2 (permalink)  
Antiguo 11/04/2005, 12:53
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
Yo lo hago de la siguiente manera:

formulario html:
Código PHP:
<form enctype="multipart/form-data" action="prueba.php" method="post">
<
input type="hidden" name="MAX_FILE_SIZE" value="1000">
Send this file: <input name="userfile" type="file">
<
input type="submit" value="Send File">
</
form
programa php:

Código PHP:
<?php
// In PHP 4.1.0 or later, $_FILES should be used instead of $HTTP_POST_FILES.


   
$archivo $HTTP_POST_FILES['userfile']['name'];
   echo 
"Archivo Recibido:" .$archivo."<br>";
   
$dir $HTTP_POST_FILES['userfile']['tmp_name'];
   echo 
"Directorio temporal: ".$dir."<br>";

if (
is_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'])) {
  
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], "/var/www/html/DBNAME/UPLOADS/".$HTTP_POST_FILES['userfile']['name']); 
} else {
   echo 
"Possible file upload attack. Filename: " $HTTP_POST_FILES['userfile']['name'];
}

?>
donde "/var/www/html/DBNAME/UPLOADS/" es el directorio donde los subo.

espero te sirva
  #3 (permalink)  
Antiguo 11/04/2005, 13:28
Avatar de ospunk  
Fecha de Ingreso: julio-2004
Ubicación: vivo donde hacen la luz electrica --- Guri
Mensajes: 42
Antigüedad: 13 años, 4 meses
Puntos: 0
lo que esba buscando
__________________
:stress: www.musicfreep2p.ven.bz :-p :pirata:
  #4 (permalink)  
Antiguo 11/04/2005, 15:52
 
Fecha de Ingreso: enero-2005
Mensajes: 43
Antigüedad: 12 años, 11 meses
Puntos: 0
nops no me funca este es el error que me tira

Warning: move_uploaded_file(15-01-05_1840.jpg): failed to open stream: Permission denied in /home/promo2k3/public_html/subirformulario.php on line 9

Warning: move_uploaded_file(): Unable to move '/tmp/php5KhI69' to '15-01-05_1840.jpg' in /home/promo2k3/public_html/subirformulario.php on line 9

Warning: filemtime(): Stat failed for 15-01-05_1840.jpg (errno=2 - No such file or directory) in /home/promo2k3/public_html/subirformulario.php on line 11

Warning: touch(): open_basedir restriction in effect. File(/temp) is not within the allowed path(s): (/home/promo2k3:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/promo2k3/public_html/subirformulario.php on line 11
  #5 (permalink)  
Antiguo 11/04/2005, 15:58
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 13 años, 5 meses
Puntos: 4
<input type="hidden" name="MAX_FILE_SIZE" value="1000">

ese valor es en bytes si no me equivoco, asi que el tamaño maximo de archivo es de 1kb, ponele un valor mas alto.
y ademas, el directorio de upload tiene que tener permiso de escritura, hacele un chmod a 777
  #6 (permalink)  
Antiguo 11/04/2005, 20:30
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Lo que hace ese script es primero subir el archivo a una carpeta temporal y posteriormente (si se subió) moverla a la carpeta final.

Precisamente con is_uploaded_file($_FILES['userfile']['tmp_name'])) verificas que se haya subido a la carpeta temporal... ve que también le cambia el nombre al archivo en esa carpeta: ['archivo']['tmp_name']... vaya!... creo haber entendido que el problema precisamente era que no se podian subir archivos de este forma...

Así que... la verdad dudo que puedas hacerlo... copy()?... no, debe hacer solo lo equivalente a move_uploaded_file() ... creo no se podrá ...

Suerte!, ojalá me equivoque.

Edito:
Si haces un phpinfo() ¿cómo esta el estado de file_uploads?
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 11/04/2005 a las 20:36
  #7 (permalink)  
Antiguo 12/04/2005, 09:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Según este error:

Cita:
Warning: touch(): open_basedir restriction in effect. File(/temp) is not within the allowed path(s): (/home/promo2k3:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/promo2k3/public_html/subirformulario.php on line 11
Por restricción de esa directiva (open_basedir) tal vez por el uso de "safe_mode" no está permitido hacer "upload" de archivos (que ya parece que está configurado: upload_tmp_dir = /tmp ) en ese servidor ...

Consulta a tu proveedor si no eres tu por esas restricciones .. en teoría deberían añadir a esa directiva (open_basedir) la ruta /tmp o la que definan para los "upload's" vía HTTP de PHP.

Podrías probar también a "forzar" donde quieres que PHP suba los archivos temporales.

Create una carptea sobre el public_html/ (para que quede fuera del alcance de una llamada por http:// (que es donde apunta el "document_root" de tu servidor HTTP normalmente). Por ejemplo "mis_uploads"

Código PHP:
ini_set("upload_tmp_dir","/home/promo2k3/mis_uploads/"); 
Usalo al principio de tu script .. Si no tienes restringido también el uso de esa función .. ahí por lo menos le dices a PHP (a tu script) que lo que suba lo haga a dicho directorio temporal tuyo .. de tu sitio asignado en ese servidor) .. Tendrás que borrar el archivo "temporal" al terminar el proceso usando: unlink() con la ruta absoluta completa tipo:

Código PHP:
unlink("/home/promo2k3/mis_uploads/".$_FILES['userfile']['tmp_name']); 
Un saludo,
  #8 (permalink)  
Antiguo 27/05/2005, 17:56
T4X
 
Fecha de Ingreso: enero-2004
Ubicación: myT-Base
Mensajes: 254
Antigüedad: 13 años, 11 meses
Puntos: 2
En realidad, tambien estoy con el mismo problema, pero ahora a mi me sale el siguiente error aun cuando hice lo que dijiste en el anterior mensaje a este:

Warning: copy(): open_basedir restriction in effect. File(/home/intimat/public_html/attachments/OlgaSoache-5383.jpg) is not within the allowed path(s): (/home/intimat/:/usr/lib/php:/usr/local/lib/php:/tmp) in /home2/intimat/public_html/site/job/index.php on line 80

Creo que no podré hacer nada con upload images, como quien dice hacerlo en la misma carpeta....
__________________
Ahora T4X es
WinGFX!!!!!
  #9 (permalink)  
Antiguo 27/05/2005, 18:01
T4X
 
Fecha de Ingreso: enero-2004
Ubicación: myT-Base
Mensajes: 254
Antigüedad: 13 años, 11 meses
Puntos: 2
Creo que con el anterior mensaje, si se fijan aparece una ruta distinta a la otra,
el archivo según la variable $_SERVER['DOCUMENT_ROOT'] me devuelve /home/intimat/public_html/
Pero al procesar el script aparece como error de variable $_SERVER['DOCUMENT_ROOT'] es /home2/intimat/public_html.

Ahora si quedé loco....
__________________
Ahora T4X es
WinGFX!!!!!
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




La zona horaria es GMT -6. Ahora son las 05:07.