PDA

Ver versión completa : formulario envio imagen


Joan
05-dic-2007, 09:06
Como puedo hacer para que un usuario pueda enviar imajenes a mi base de datos Mysql o al algun archivo donde yo ( administrador ) tenga acceso a ea ??
Gracas..

wompygs
06-dic-2007, 11:04
Hola, deberias crear una base de datos en donde se guarden las URL de las fotos, y estas que ellos las suban al FTP mediante un formulario con un campo type file.
Así tu podras borrarlas y administrarlas desde la base de datos.

Joan
09-dic-2007, 08:28
He creado una table de base de datos con "fotosid ( int)""nombre(vanchar)""file(blob)", despues he creado con dreamweaver un formulario vinculado a esa tabla, en propiedades del formulario he aplicado metodo " POST" y tipo de codificacion "multipart/form-data" ( lo pongo así porque es lo que he visto por algun tutorial que se debe de aplicar el formulario ), si que me lleva el archivo, pero no puedo visualizar la foto que el usuario me ha enviado para poder gestionar yo en labase de datos y poder validar la foto que envia, (espero haberme explicado bien ). No se que hacer ya, estoy al borde de dejarlo todo, pero lo necesito hacer. Puedes ayudarme ???? Gracias....

wompygs
09-dic-2007, 09:23
Para eso estamos!! jeje
Solo dos cosas,
1)no pongas file como blod. Ponlo como varchar, y en el que se guarde tan solo la URL del archivo que se esta mandando con el formulario ok?
2) usa la funcion de copiar archivos de php para subir el archivo del formulario al ftp, pero esto no tiene nada que ver con la base de datos, va por separado.
de esta forma se copia el archivo y se sube al ftp, y en la base de datos carga la url con el nombre de la imagen, así es mas facil y la base de datos no se satura.
Espero que me entiendas, sino ya me avisas
Un saludo

Joan
10-dic-2007, 03:15
Gracias por tu informacion ( lo primero),
pero tengo alguna duda ( como no !! jeje..):
No entiendo la informacion que me diste:
"2) usa la funcion de copiar archivos de php para subir el archivo del formulario al ftp". No se como va eso de subir la imagen mediante ftp mesiante un formulario de " campo de archivo".
Podrias explicarme como se realiza ??? es decir, si no he entendido mal, el usuario ( que entra en mi web) envia su foto mediante ftp a una carpeta de mi servidor, pero la url se me gusrda en mi base de datos, si es asi, te agradeceria que me dijeras como realizar la accion de ftp ( el usuario) o si hay algun videotutorial / tutorial que lo explique, creo que en vuestra wew no hay ( almenos no he sabido encontrarla ) ..

Gracias...

wompygs
11-dic-2007, 01:30
Hola Joan
No había ningún tutorial en la web que lo explique, pero ya que es algo bastante útil hice este:
http://www.original-design.es/tutoriales/subir_archivos_ftp_php.php (http://www.original-design.es/tutoriales/subir_archivos_ftp_php.php)
Espero que te sirva y que lo entiendas. En tu caso en el mismo archivo de subir_archivos.php puedes incluir la sentencia de MySQL para que te escriba la url, y así ya lo tienes todo :p

PD: Muevo el post a ayudas de PHP ya que la duda corresponde mas con ello

Joan
11-dic-2007, 09:45
He ido a tutoriales PHP, y no he visto mis consultas, asi que te escrivo por este tutorial ( lo siento )...
He hecho la prueba con las indicaciones de tu tutorial en: http://www.original-design.es/tutoriales/subir_archivos_ftp_php.php
me ha salido bien: cargo el archibo mediante "examinar" de la pagina del formulario ( que en mi caso la llamo prova-fotos.php ) y se me redirecciona a la pagina ( subir_archibo.php ) con el siguiente mensage (el archivo se a subido correctamente al servidor).Pero cuando voy a la carpeta donde he especificado en el Script que me tiene que enviar las fotos, no hay nada, no se si esque hay algo del Script que tenga mal, te lo adjunto para haber si ves algo raro..... ( por cierto,!!! la carpeta del destino de las imagenes, se llama "imagenes-sql" y esta carpeta SI tiene permiso de Lectura, escritura y ejecucion el usuario.) asi que no se porque no me sube la imagen a mi carpeta, haber si puedes ayudarme...

<?php
$directorio_archivo = "/httpdocs/imagenes-sql/ "; // tipo /home/user/public_html/archivos/
$nombre = strtr($_FILES['archivo']['name'], "ñ'ÁÉÍÓÚÀÈÌÒÙáéíóúäëïöüàèìòù ", "n-AEIOUAEIOUaeiouaeiouaeiou_");
$tamanio = $_FILES['archivo']['size'];
$tipo = $_FILES['archivo']['type'];
copy($_FILES['archivo']['tmp_name'], $directorio_archivo.$nombre);
echo "el archivo se a subido correctamente al servidor<br>";
?>

sirviejo
11-dic-2007, 04:24
chequea que el directorio tenga permisos de escritura.. si no no te va a dejar subirlo.
Con el script que estas haciendo la leyenda "el archivo se a subido correctamente al servidor" siempre te va a aparecer, dado que es parte del flujo y no esta dentro de ninguna condicion.
saludos.. dentro de un rato te pongo mi script para subir archivos.
Sirviejo.

sirviejo
11-dic-2007, 05:37
Con este script, se puede comprobar si se cometen errores, lo que hace es subirlo a una carpeta temporal y luego moverla al lugar adecuado.
<?php
$error = false;
// compruevo si el archivo tiene el formato adecuado.
if ($_FILES["archivo"]["type"]!="image/jpeg") {
$error = true;
}
// verificamos el peso adecuado, cambiar el 200000 por el peso que quieras
if ($_FILES["archivo"]["size"] > 200000) {
$error = true;
}
// comprovamos si se han producido errores en la carga
if ($_FILES["archivo"]["error"] != 0) {
$error = true;
}
// javascript para volver para atras si hay errores
if ($error) {
echo ("<javascript language='javascript' type='text/javascript'>");
echo ("location.href='prova-fotos.php';");
echo ("</javascript>");
}
//Para finalizar intentamos grabar y comprovamos si se hizo bien
$archivoRecibido=$_FILES["archivo"]["tmp_name"];
// cambiar esto por una variable llamada del form
$destino="archivos/archivotmp.jpg";
if (move_uploaded_file ($archivoRecibido,$destino)) {
echo ("Archivo Grabado correctamente");
} else {
echo ("el archivo no se pudo grabar");
}
?>

saludos,
sirviejo

PD: sorry por hacer dos post. pero los hice desde mi trabajo. salteando el proxy :P

Joan
11-dic-2007, 08:47
gracias por el script....!!!
disculpa mi ignorancia, pero no entiendomuchosobre el lenguaje que aplicas, pero intento aprender, quisiera saber si el script completo que me has posteado, en que archibo tengo que copiarlo ???, en el de "buscar archivo", o en el de "subir-archibo" o en otro ????....

he hecho ua prueba creando un archibo nuebo donde puedo acceder a el con un acceso directo de mi pagina "index" el cual si doi al link del acceso directo que me envia la la pagina creada con tu script, me sale el siguiente error:

location.href='prova-fotos.php';el archivo no se pudo grabar

podrias explicarme que significa esto ??? ...gracias, gracias.... es realmente lo que dice ???!!!que no puede grabar el archivo ??? pero porque ???


Gracias de antemano....

sirviejo
12-dic-2007, 12:13
el archivo que eh publicado es para que lo alojes en el archivo que hace el envio del archivo al servidor, obviamente tenes que modificarlo para que traiga las variables del formulario que tenes en el otro .php
El error que sale por que hubo errores en la carga, principalmente por que no hay archivo. :P cualquier cosa en un rato me conecto desde el trabajo

Joan
12-dic-2007, 01:26
He agregado tu script dentro del campo del formulario , y cuando hago la prueba, me sale el siguiente error:

Parse error: parse error, unexpected '/' in C:\wamp\www\comnou-php\subir_archivo.php on line 374

pero en la linea 374, tengo lo siguiente:

<input name="archivo" type="file" id="archivo" value="" size="32" />

( el archivo"subir_archivo", es el que copié del tutorial y dice lo siguiente:
<?php
$directorio_archivo = /httpdocs/imagenes-sql/ ; // tipo /home/user/public_html/archivos/
$nombre = strtr($_FILES['archivo']['name'], "ñ'ÁÉÍÓÚÀÈÌÒÙáéíóúäëïöüàèìòù ", "n-AEIOUAEIOUaeiouaeiouaeiou_");
$tamanio = $_FILES['archivo']['size'];
$tipo = $_FILES['archivo']['type'];
copy($_FILES['archivo']['tmp_name'], $directorio_archivo.$nombre);
echo "el archivo se a subido correctamente al servidor<br>";
?>


porcierto !!! me dijiste que tenia que modificar alguna cossilla del formulario, pero no se ver que tengo que modificar..!!!
disculpa mi ignorancia !!!

sirviejo
12-dic-2007, 04:27
el script que te di es para que lo cambiaras por el que estas usando es una alternativa... no para poner en el script del formulario. Ahora en un rato te pongo todo el script completo! no te preocupes. Saludos.

sirviejo
12-dic-2007, 04:42
bueno tengo un poco de tiempo asi que pongo el formulario que deberias usar con mi script...

<form action="subir_archivo.php" method="post" name="f_prof" id="f_prof" enctype="multipart/form-data">
Archivo:
<input type='file' name="archivo" id="archivo">
<input type='submit' name="ok" value="ENVIAR" id="ok">
</form>

Joan
12-dic-2007, 04:51
Gracias , mil gracias ...
Por si te sirve de ayuda, te posteo como tengo los archibos :
1º archibo:
prova-fotos.php

script del formulario para enviar las fotos:
<form action="subir_archivo.php" method="POST" enctype="multipart/form-data" name="form1">
<p>
<input name="archivo" type="file" id="archivo" value="" size="32" />
</p>
<input type="submit" name="Submit" value="Enviar" />
</form>

2º archivo:
subir_archivo.php

Script del archivo:
<?php
$directorio_archivo = "/httpdocs/imagenes-sql "; // tipo /home/user/public_html/archivos/
$nombre = strtr($_FILES['archivo']['name'], "ñ'ÁÉÍÓÚÀÈÌÒÙáéíóúäëïöüàèìòù ", "n-AEIOUAEIOUaeiouaeiouaeiou_");
$tamanio = $_FILES['archivo']['size'];
$tipo = $_FILES['archivo']['type'];
copy($_FILES['archivo']['tmp_name'], $directorio_archivo.$nombre);
echo "el archivo se a subido correctamente al servidor<br>";
?>

Por si te sirve de ayuda, la carpeta imagenes-sql ( de httpdocs ) esta con permiso de escritura 777 ).

Si hago la prueba con el servidor web, me sale (el archivo se a subido correctamente al servidor ), pero su voy a mi administrador de archivos del plesk de mi web, entro en la carpeta "imagenes-sql" y no hay nada.

Gracias de antemano...

sirviejo
12-dic-2007, 06:31
mm me gustaria si puedieras poner toda la estructura de las carpetas q tenes en tu servidor. Por ejemplo donde pones el index.php?

Joan
13-dic-2007, 06:51
aqui tienes lo que me pediste, la estructura de mis archibos es la siguiente :


es decir, la carpeta donde va a parar todos los archibos y carpetas que voy creando van a parar a " httpdocs" es decir, " index.php" esta justo dentro de "httpdocs" ( httpdocs/index.php )

Espero que sea lo que necesitas...
Haber si tenemos suerte y me me puedes ayudar... de hecho ya lo estas haciendo ... te lo agradezco...haver si podemos solucionarlo...

sirviejo
13-dic-2007, 10:51
uno de los errores que puedo ver es que estas incluyendo el directorio httpdocs, en el directorio destino, proba poniendo solamente /imagenes-sql

Joan
13-dic-2007, 01:35
Lo he intentado tal y como me has dicho, sin el "httpdocs/", pero me sigue saliendo la confirmacion del envio del archibo, pero cuando voy a la carpeta "imagenes-sql" no me sale nada, esta vacia la carpeta... ya no se que hacer.. estoy desesperado...::llorera::
Help..my !!!

Ahora esta de la siguiente manera: ( sigue fallando, no me sube la foto al servidor de la web )

<?php
$directorio_archivo = "/imagenes-sql "; // tipo /home/user/public_html/archivos/
$nombre = strtr($_FILES['archivo']['name'], "ñ'ÁÉÍÓÚÀÈÌÒÙáéíóúäëïöüàèìòù ", "n-AEIOUAEIOUaeiouaeiouaeiou_");
$tamanio = $_FILES['archivo']['size'];
$tipo = $_FILES['archivo']['type'];
copy($_FILES['archivo']['tmp_name'], $directorio_archivo.$nombre);
echo "el archivo se a subido correctamente al servidor<br>";
?>

Joan
13-dic-2007, 04:20
Ya esta solucionada amigo mio... el problema era que le faltaba el punto antes de / imagenes-sql
debia ponet:
./imagenes-sql

mil gracias, mil gracias, al final, provando cosillas he podido encontrar el error...
Te agradezco que me hayas seguido ayudadndo y apoyando en el scrips... ers genial... es el mejor foro que he visto, porque la mayoria te dicen dan accesos a otras paginas con tutoriales y esas cosas, aqui tu te pones en nuestra piel y intentas ver el error y poder solucionarlo... mil gracias.

sirviejo
16-dic-2007, 10:20
buenisimo que te haya servido, mi ayuda, perdon por no responder rapido a tu ultimo post. Es que estuve bastante ocupado con mis proyectos personales, lanzamiento de mi blog personal. Y la compra de mi nuevo celular nokia 6630.
Desde ya cualquier cosa que necesites mandame un PM!
saludos.