Como subir archivos al servidor mediante php

Me estoy iniciando en php y estoy creando un catalogo para una web. Ya he conseguido crear la base de datos y el código para que el cliente vaya actualizando los productos mediante la propia web con un formulario.
El problema que tengo es que no se hacer para que pueda subir fotos. Creo que las tiene que subir al servidor y guardar en la base de datos solo el nombre del archivo, pero ¿cómo es el código php para que salga un browser y pueda elegir el archivo para subirlo?

4 respuestas

Respuesta
1
Para subir fotos tenés que crear un formulario con
<form method="post" enctype="multipart/form-data" action="subirfoto.php">
<input name="imagen" type="file">
</form>
y en el archivo (en este caso) subirfoto.php
Para el caso de imagenes JPG
(fijate que se le puede dar un nombre llamado en este caso $nombre.
if (preg_match("/jpg|jpeg/",$imagen_type))
{
$nombreimagen = "../imagenes/".$nombre.".jpg";
copy ($imagen, $nombreimagen) or die ("Imposible copiar el archivo");
crearthumb($nombreimagen,"../thumbs/".$nombre.".jpg",120,100);
}
Fíjate que la función crearthumb del final se la agrego por si necesitas una imagen en menor resolución que la anterior (en este caso 120x100 pixeles, siempre toma el valor máximo como parámetro para achicar proporcionalmente.)
La funcion para achicar crearthumb es generica para jpg,gif y png.
y te la paso aqui
function crearthumb($nombre,$thnombre,$ancho,$alto)
{
global $gd2;
if (preg_match("/jpg|jpeg/",$nombre))
{ $src_img=imagecreatefromjpeg($nombre); }
if (preg_match("/png/",$nombre))
{ $src_img=imagecreatefrompng($nombre); }
$antiguo_x=imageSX($src_img);
$antiguo_y=imageSY($src_img);
if ($antiguo_x > $antiguo_y)
{
$thumb_w=$ancho;
$thumb_h=$antiguo_y*($alto/$antiguo_x);
}
if ($antiguo_x < $antiguo_y) {
$thumb_w=$antiguo_x*($ancho/$antiguo_y);
$thumb_h=$alto;
}
if ($antiguo_x == $antiguo_y) {
$thumb_w=$ancho;
$thumb_h=$alto;
}
if ($gd2==""){
$dst_img=ImageCreate($thumb_w,$thumb_h);
imagecopyresized($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$antiguo_x,$antiguo_y);
}else{
$dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$antiguo_x,$antiguo_y);
}
if (preg_match("/png/",$system[1])){
imagepng($dst_img,$thnombre);
} else {
imagejpeg($dst_img,$thnombre);
}
imagedestroy($dst_img);
imagedestroy($src_img);
}
Espero que te haya servido, cualquier explicación más extensa volvé a consultarme pero el código es bastante sencillo de entender.
PD: use los directorios imágenes y thumbs para cargar las fotos.
Fíjate que estos directorios estén con permiso 777 (lo podes cambiar desde un ftp).
Respuesta
1
Es fácil, en el mismo formulario que usas para rellenar los datos.
Incluye un nuevo campo:
<input type="file" name="foto">
En la página donde guardas los datos en la base de datos usa la función de php copy para subir esta imagen al sitio que quieras en tu servidor.
Para ver información relativa a la función de php copy consulta:
http://www.php.net/manual/es/function.copy.php
Respuesta
1
Haber lo que buscas es algo complicado y extenso como para ponértelo aquí dado que también requiere de unas configuraciones con el FTP y en el php.ini (o en linux su respectivo). No obstante estuve buscando por ahí alguien que lo explicara bien y aquí lo tienes todo perfectamente explicado: http://www.rinconastur.com/php/php63a.php
El tutorial se llama "Memorias de un aprendiz PHP" y la página inicial es http://www.rinconastur.com/php yo aprendí PHP con este tutorial y para mi es como la biblia.. la consulto para todo.
Respuesta
1
Para subir archivos con php, es bastante fácil
aquí te muestro el código básico para subir un archivo; si lo vas a subir en unix o linux debes crear la carpeta donde se guardaran con CHMOD o nivel de acceso en "777".
Este código ofrece muchas fallas de seguridad ya que permite subir cualquier cosa al servidor
entonces debes ponerle limites de tamaño de imagen o tipos de archivos, si contaras con problemas, puedes preguntar de nuevo y te ayudo con eso
Saludos
<?
if(!$subir){
?>
<form method="post" enctype="multipart/form-data" action="archivo.php">
<input type="file" name="archivo"><br>
<input type="submit" name="subir" value="Subir Archivo">
</form>
<?
}else{
move_uploaded_file($archivo, "CARPETA/".$HTTP_POST_FILES[archivo][name]);
echo "el archivo ".$HTTP_POST_FILES[archivo][name]."fue subido correctamente";
}
?>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas