Foros del Web » Programando para Internet » PHP »

Duda para subir archivo a carpeta especifica

Estas en el tema de Duda para subir archivo a carpeta especifica en el foro de PHP en Foros del Web. Hola a todos, muy buenos días. Envío este mensaje al foro para ver si alguien puede darme una mano con esto. Soy novato y hasta ...
  #1 (permalink)  
Antiguo 15/02/2007, 09:05
 
Fecha de Ingreso: septiembre-2003
Ubicación: Capital Federal
Mensajes: 38
Antigüedad: 20 años, 7 meses
Puntos: 0
Duda para subir archivo a carpeta especifica

Hola a todos,
muy buenos días. Envío este mensaje al foro para ver si alguien puede darme una mano con esto. Soy novato y hasta el momento venía haciendo cosas sencillas con DW, pero al querer hacer algo mas complicado se me terminó complicando un poco. Lo que quiero hacer es que cuando subo una foto al servidor la misma se guarde en una carpeta ya creada, por ejemplo "fotos". El script que pego a contiuación (que funciona muy bien) permite hacer un upload de hasta 4 fotos, solo hay que configurar algunos datos. En principio imagino que en algun lado tengo que decirle la ruta donde quiero que guarde las fotos, por ejemplo: $destino_foto="/fotos/" , y luego? tengo que utilizar un move_uploaded.... u otra cosa? y donde tengo que insertarlo. No logro darme cuenta como hacerlo, desde ya les agradecería los consejos que me pudieran brindar.

Código PHP:
<?php
error_reporting
(E_ALL);
@
ini_set('display_errors''1');
/*----------- INICIO DE CONFIGURACION-----------------*/
//definir el nombre o la ip del servidor de db
$server='localhost';
//definir el nombre de usuario de la db
$user='';
//definir la contraseña
$pass='';
//definir el nombre de la db
$db='';
//en la siguiente línea, definir el nombre de la tabla de la db (escribirlo entre las comillas simples).
$tabla='';
//en esta otra línea colocar el nombre del archivo a mostrar al finalizar el proceso (escribirlo entre las comillas simples)
$destino='';
/*----------- FIN DE LA CONFIGURACION-----------------*/
mysql_connect($server,$user,$pass);
mysql_select_db($db);
function 
insertar_form($tabla){
foreach(
$_POST as $k => $v){
if(
$k!='imageField_x' && $k!='imageField_y' && $k!='foto' && $k!='foto1' && $k!='foto2' && $k!='foto3' && $k!='Submit'){
$listacampos[]=$k;
$listavalores[]=(get_magic_quotes_gpc()) ? $v addslashes($v);
}}
$formatocampos=implode(',',$listacampos);
$formatovalores="'".implode("','",$listavalores);
$formatovalores.="'";
mysql_query("insert into $tabla ($formatocampos) values ($formatovalores)");
}
function 
subirarchivo($archivo,$archivotemp,$tabla,$campoarchivo,$error){
$qry=mysql_query("select max(id) as ultimo from $tabla");
$row=mysql_fetch_assoc($qry);
$id=$row['ultimo'];
if(
$archivo!=''){
$extension200=end(explode(".",strtolower($archivo)));
if(
$extension200!='jpg' && $extension200!='gif' && $extension200!='png' && $extension200!='doc' && $extension200!='zip' && $extension200!='pdf' && $extension200!='xls' && $extension200!='ppt' && $extension200!='swf'){
eval(
$error);exit;}
$foto2=md5(time()).$archivo;
if(!
copy($archivotemp,$foto2)){die('No pudo cargarse la foto');};
@
chmod($foto2,0777);
mysql_query("update $tabla set $campoarchivo='$foto2' where id='$id'");
}
}
insertar_form($tabla);
if(isset(
$_FILES['foto']['name'])){
subirarchivo($_FILES['foto']['name'],$_FILES['foto']['tmp_name'],$tabla,'foto','');
}
for(
$i=1;$i<4;$i++){
if(isset(
$_FILES['foto'.$i]['name'])){
subirarchivo($_FILES['foto'.$i]['name'],$_FILES['foto'.$i]['tmp_name'],$tabla,'foto'.$i,'');}
}
header("Location:$destino");
?>
Muchas gracias y saludos.

JoseA.
  #2 (permalink)  
Antiguo 15/02/2007, 10:38
 
Fecha de Ingreso: septiembre-2003
Ubicación: Capital Federal
Mensajes: 38
Antigüedad: 20 años, 7 meses
Puntos: 0
Re: Duda para subir archivo a carpeta especifica

Me olvidaba, las imágenes me las copia en la raiz del sitio o en la carpeta donde esté puesto el archivo que tiene el script que sube la imagen.
Hay una variable: $archivotemp , esa, dentro del script no es la que da la dirección de donde guarda la foto?.

Muchas gracias nuevamente.

Saludos.

JoseA
  #3 (permalink)  
Antiguo 19/02/2007, 09:02
 
Fecha de Ingreso: septiembre-2003
Ubicación: Capital Federal
Mensajes: 38
Antigüedad: 20 años, 7 meses
Puntos: 0
Re: Duda para subir archivo a carpeta especifica

Bueno, quizás lo que pregunté es muy dificil o de poco interes para la mayoría. De todas maneras comparto como lo solucioné momentaneamente:

Dentro de la carpeta fotos que es donde quería guardar las mismas, puse el archivo que me subía las mismas y listo, no queda demasiado prolijo ya que tengo mezcladas imágenes con archivos de código... pero bueno... peor es nada.

En la carpeta backend sigo manejando la administración, cuando llego a hacer algún ingreso o modificación lo que hago es reenviar el action al archivo que se encuentra en la carpeta fotos y de ahí el destino lo vuelve a llevar a backend.

Bueno, es lo que pude hacer.

Slds,
JoseA.
  #4 (permalink)  
Antiguo 19/02/2007, 09:20
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 5 meses
Puntos: 281
Re: Duda para subir archivo a carpeta especifica

bueno, algo tarde pero ahi vamos...

Creo que la funcion simpre te va a subir la imagen al mismo directorio a menos que cambies una linea. En la funcion, donde dice:

Código PHP:
$foto2=md5(time()).$archivo
Cambiala a:

Código PHP:
$foto2="fotos/".md5(time()).$archivo
'fotos/' siendo el directorio donde quieres guardar la imagen

Tambien, la variable $archivo es el nombre que le quieras poner a la imagen. A esta variable se le va a añadir un 'timespamp' convertido en un hash md5 al principio, lo que me parece muy bien ya que esto hace que ningun archivo tenga el mismo nombre y asi evitar que borre uno que ya estaba el la carpeta.

La variable $archivotemp la estas pasando bien, pues debe ser el archivo temporero subido por el usuario.

Tambien te recomiendo que usus move_uploaded_file en vez de 'copy'. Eso te mueve el mismo archivo que el usuario subio en vez de copiarlo.
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...

Última edición por juaniquillo; 19/02/2007 a las 09:30
  #5 (permalink)  
Antiguo 25/02/2007, 17:57
 
Fecha de Ingreso: septiembre-2003
Ubicación: Capital Federal
Mensajes: 38
Antigüedad: 20 años, 7 meses
Puntos: 0
Re: Duda para subir archivo a carpeta especifica

Juaniquillo,
gracias por tu respuesa y ayuda, en relación a lo que me enviaste estuve haciendo las pruebas y me encontré con que no me funciona de esa manera o cambiando esas lineas.
Por ejemplo:
Si en vez de move_oploeaded_file utilizo copy , me da este mensaje de error:

Warning: copy(fotos/d5878105e747f8b36314387636c2b200cupon-pago-gd.jpg) [function.copy]: failed to open stream: No such file or directory in C:\xamp\xampp\htdocs\cdsur\backend\insertar_con_fo to.php on line 40
No pudo cargarse la foto

Si utilizo move_uploaded_file el error que me da es este:

Warning: move_uploaded_file(fotos/3cf1aaa7c8d1159f6c22924b3aa39bb6cupon-pago-gd.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\xamp\xampp\htdocs\cdsur\backend\insertar_con_fo to.php on line 40

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\xamp\xampp\tmp\php1F.tmp' to 'fotos/3cf1aaa7c8d1159f6c22924b3aa39bb6cupon-pago-gd.jpg' in C:\xamp\xampp\htdocs\cdsur\backend\insertar_con_fo to.php on line 40
No pudo cargarse la foto

En ningun caso me sube las fotos. La linea 40 según veo tiene esto:

Código PHP:
if(!copy($archivotemp,$foto2)){die('No pudo cargarse la foto');}; 
o lo mismo pero con move_uploaded_file

El otro cambio, de poner la ruta de la carpeta antes del md5 está hecho.
Bueno, si esto te dice algo desde ya te volvería a agradecer tu ayuda.

Slds,
JoseA
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 03:39.