PHP - Especificar el directorio al Subir una imagen.

 
Vista:

Especificar el directorio al Subir una imagen.

Publicado por Jorge Rubiano (13 intervenciones) el 16/01/2006 20:37:14
Hola amigos del Foro, mí inquietud en el día de hoy es la siguiente:
Intento subir fotografías de las personas, ya he encontrado uno que otro código que lo hacen, el problema es que las deja en el mismo directorio en el que estoy ejecutando el archivo y me genera desorden, quisiera saber sí existe una manera de índicar el directorio donde quiere que se guarden las fotos que se están subiendo; el código que he venido utilizando para esto es el siguiente

<?

if($boton) {
if (is_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'])) {
if($HTTP_POST_FILES['archivo']['size'] < 85000) {
if($HTTP_POST_FILES['archivo']['type']=="image/gif" || $HTTP_POST_FILES['archivo']['type']=="image/jpeg" || $HTTP_POST_FILES['archivo']['type']=="image/pjpeg") {
copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']);
$subio = true;
}
}
}

if($subio) {
echo "El archivo subio con exito";
} else {
echo "El archivo no cumple con las reglas establecidas";
}
die();
}

?>
<html>
<head>
<title>Upload en PHP - Ejemplo 2</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data" name="form1">
<p align="center">Archivo
<input name="archivo" type="file" id="archivo">(Solo formato GIF Y JPG menores a 80K)
</p>
<p align="center"><input name="boton" type="submit" id="boton" value="Enviar"></p>
</form>
</body>
</html>

Con este código logró subir la imagen, pero el problema es el que les comenté, que deja la imagen en el mismo directorio y como lo dije lo que deseo es dejar las imagenes en archivo especifico, de antemano gracias por la ayuda que me puedan prestar.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Especificar el directorio al Subir una imagen.

Publicado por Mike79 (669 intervenciones) el 16/01/2006 21:18:39
Tu mismo publicas tu respuesta
Donde dice:

copy($HTTP_POST_FILES['archivo']['tmp_name'], $HTTP_POST_FILES['archivo']['name']);

Debes agregar, antes del archivo destino, el nombre de la carpeta donde va a estar el archivo, por ejemplo en windows quedaria algo mas o menos así:

copy($HTTP_POST_FILES['archivo']['tmp_name'], "c:\carpeta\".$HTTP_POST_FILES['archivo']['name']);

Aunque te debo de comentar, que existe una función especial, llamada:
move_uploaded_file el cual es recomendable por cuestiones de seguridad, puedes consultar la documentación en:
http://www.php.net/manual/es/function.move-uploaded-file.php

Entonces en lugar de copy, te quedaria algo asi como:

if (move_uploaded_file($HTTP_POST_FILES['archivo']['tmp_name'], "ruta/carpeta".$HTTP_POST_FILES['archivo']['name'])) {

Bueno, siguiendo con los comentarios, puedes usar $_FILES en lugar de $HTTP_POST_FILES, y deberias usar variables para hacer el codigo mas endendible.

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Especificar el directorio al Subir una imagen.

Publicado por tiber (6 intervenciones) el 16/01/2006 22:41:09
ojala te sirva de algo, to utilizo este código.

<?php
$xx=$_GET['x'];
if($xx == 2)
{
$xrfc=$_POST['rfc'];

$org=$_FILES['imgex']['tmp_name'];
$des="imgs/docs/".$_FILES['imgex']['name'];
$nomex='extra';
$move=move_uploaded_file($org,$des);
$rena=rename("$des","imgs/docs/$nomex.jpg");
}
?>

<HTML>
<HEAD><TITLE>SIRH: Archivo - Datos del Acta de Nacimiento</TITLE>

</HEAD>
<BODY CLASS=imagen>



<TABLE cellSpacing=0 cellPadding=0 width=720 summary=null border='0' bgcolor=White>
<TBODY>
<TR>
<TD vAlign=top noWrap align=left width=720>
<TABLE cellSpacing=0 cellPadding=0 width=720 summary=null border='0'>
<TBODY>


<!-- ::. F O R M U L A R I O D E E N V I O .:: -->

<FORM ACTION='../subefoto.php?x=2' METHOD='POST' name='actan' enctype="multipart/form-data">

<TR>
<TD noWrap width=1 bgColor=#a9a9a9><SPACER width='1' type='block'></TD>

<TD noWrap width=718>
<TABLE cellSpacing=0 cellPadding=0 width=718 summary='Datos del Acta de Nacimiento' border=0>

<TR>
<TD noWrap colSpan=3 height=10><SPACER type='vertical' height='10'></TD></TR>

<TBODY>
<TR>
<TD colSpan=3>
<H1>Datos del Acta de Nacimiento</H1></TD></TR>
<TR>
<TD noWrap colSpan=3 height=10><SPACER type='vertical' height='10'></TD></TR>
<TR>
<TD class=yregfieldtitle align=right width=150>
<LABEL>RFC:</LABEL></TD>
<TD noWrap width=10><SPACER width='10' type='horizontal'></TD>
<TD align=left width=560>
<INPUT TYPE='Text' NAME='rfc' MAXLENGTH='16' ></TD></TR>

<TR>
<TD noWrap colSpan=3 height=10><SPACER type='vertical' height='10'></TD></TR>
<TR>
<TD class=yregfieldtitle align=right width=150>
<LABEL>Imagen Extra:</LABEL></TD>
<TD noWrap width=10><SPACER width='10' type='horizontal'></TD>
<TD align=left width=560>
<INPUT name="imgex" size="20" onkeypress="KeyPress()" type="file" ></TD></TR>


<TABLE cellSpacing=0 cellPadding=0 width=718 border=0>
<TBODY>
<TR>
<TD noWrap>  
<CENTER>
<INPUT type='submit' id=btn_enviar value=' Guardar ' name='btn_enviar' >
</CENTER></TD></TR></TBODY></TABLE></TD>
<TD noWrap width=1 bgColor=#a9a9a9><SPACER width='1' type='block'></TD></TR>

</FORM>
</TBODY></TABLE></DIV>
<CENTER> <HR width=710 noShade SIZE=1>
<TABLE cellSpacing=0 cellPadding=0 width=720 summary=null border=0>
<TBODY>
<TD align=middle><FONT face=arial color='#8d8d8d' size=-2>Copyrigh © 2005 by soluciones Inc. proprietary of mismuebles.com. All Rights Reserved.</B></FONT></TD>
<TR>
</TR>
</TBODY>
</TABLE>
</CENTER>
<BR>

</BODY>
</HTML>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Especificar el directorio al Subir una imagen.

Publicado por Jorge Rubiano (13 intervenciones) el 17/01/2006 14:31:29
Gracias por la pronta respuesta, y sí ya me funcionó, ahora mi pregunta es la siguiente, como puedo darle el nombre a la imagen, es decir, por ejemplo la imagen que suba se llame foto, y yo la quiero llamar por ejemplo foto23, para poderla identificar más fácil, la verdad no lo he probado, pero sí llego a subir dos imagenes con el mismo nombre que pasaría, se ¿sobrescribe?, por eso necesitaría darle el ombre a la imagen, sé que en $HTTP_POST_FILES['archivo']['name']), esta el nombre de la imagen pero no le he podido variar el nombre, de nuevo gracias y espero que me vuelvan a ayudar.....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Especificar el directorio al Subir una imagen.

Publicado por Mike79 (669 intervenciones) el 17/01/2006 23:02:36
Si, si se repite el nombre, la imagen se sobreescribe, o en el peor de los casos, marca un error (si no tienes permiso para escribir una imagen que ya se encuentre). Es responsabilidad del programador verificar que la imagen no exista antes de escribir un archivo.

Para verificar que exista el archivo antes de sobreescribirla, utiliza la función is file.
http://www.php.net/manual/es/function.is-file.php

Para "cambiar" el nombre del archivo, solo hace falta que modifiques el segundo parametro de move_uploaded_file, a menos que no me hallas hecho caso y sigas usando el copy. Para información de la función consulta:

http://www.php.net/manual/es/function.move-uploaded-file.php

Saludos!
-
Miguel Angel
Mike79
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar