Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Orientacion para subir imágenes con Ajax a MySQL

Estas en el tema de Orientacion para subir imágenes con Ajax a MySQL en el foro de Frameworks JS en Foros del Web. Buenas, estoy haciendo un programa que me permita subir datos a mi BBDD, entre los datos que quiero subir tengo un archivo de audio y ...
  #1 (permalink)  
Antiguo 05/05/2008, 16:08
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 17 años, 5 meses
Puntos: 0
Orientacion para subir imágenes con Ajax a MySQL

Buenas, estoy haciendo un programa que me permita subir datos a mi BBDD, entre los datos que quiero subir tengo un archivo de audio y una imagen, bien mi problema reside en que he encontrado como subirlo directamente con un archivo php, pero yo hago un paso intermedio con Ajax, de manera que pueda subir muchos datos a la vez (Ajax + POO + php). Me explico, yo utilizo Ajax para que cada se me vayan mostrando los datos a subir en un grid y cuando tengo todos los datos que quiero subir darle a un submit para que me los introduzca todos en mi BBDD, para hacer esto utilizo una tabla intermedia, que es la que me muestra lo introducido hasta el momento. Bien el problema es que no consigo hacer las comprobaciones necesarias así como de transformación de los archivos para poder subirlos en BLOB primero a la tabla y luego subirlos a la BBDD.

He pensado en tratar las imagenes en registro.php para luego pasar las variables creadas a la funcion crear y alli introducir en la tabla intermedia, el problema que tengo es que para tratar la imagen se utiliza $_FILES y no se como pasarlo des de el html...es decir no se como cogerlo ya que no estoy en el php al que le se hace la llamada, ya que se llega des de una llamada en javascript.

Tratamiento imagenes, aquí tengo el problema, no se como acceder al archivo.
Código PHP:
  $name $_FILES["foto"]["name"];
  
$type $_FILES["foto"]["type"];
  
$tmp_name $_FILES["foto"]["tmp_name"];
  
$size $_FILES["foto"]["size"]; 
El proceso seria:

FORMULARIO HTML --> JAVASCRIPT/AJAX: Comprueba() -> enviarDatosCompra() --> PHP/POO: registro.php -> crear()

¿Me podría orientar alguien de como hacerlo o alguna otra manera? le llevo tiempo dando vueltas y no consigo hacerlo... Muchas gracias!


FORMULARIO
Código HTML:
<FORM ID="formIMArticulo" NAME="formIMArticulo" method="post" onSubmit="comprobar();return false;">
  		<TR>
		<TD align="left" width="100">Artista:</TD>
		<TD align="left" width="150"><INPUT TYPE="text" NAME="Artista" MAXLENGTH="30" SIZE="10" onChange="javascript:this.value=this.value.toUpperCase();"></TD>
		</TR>
		<TR>
		<TD align="left" width="100">Disco:</TD>
		<TD align="left" width="150"><INPUT TYPE="text" NAME="Disco" MAXLENGTH="30" SIZE="10" nChange="javascript:this.value=this.value.toUpperCase();"> </TD>
		</TR>
		<TR>
		<TD align="left" width="100">Imagen:</TD>
		<TD align="left" width="150"><input type="file" id="foto" name="Imagen" onBlur="LimitAttach(this,1);"/>
		</TD>
		</TR>
		<TR>
		<TD align="left" width="100">Sample:</TD>
		<TD align="left" width="150"><input type="file" id="sample" name="MP3" onBlur="LimitAttach(this,2);"/>
		</TD>
		</TR>
		<TD>        
		<input type="submit" NAME="btnIntroducir" value="Introducir Artículo"><!--Este sólo introduce en la tabla-->
        <INPUT type="reset" value="Limpiar Campos" name="Limpiar" onClick="ponerfoco(0,0)">
		</TD>
		</TR>
	</FORM>
	<tr>
    <td><div id="resultado"><?php include('./IntroArticulo/consulta.php');?></div></td> <!-- carga los datos de la tabla intermedia y los muestra -->
	</tr>

	<form name="formIntroArticulo" action="./IntroArticulo/iarticulo.php" method="post">
		<tr>
		<td>
        <INPUT type="submit" name="boton2" value="Guardar Artículos">	
   		<INPUT type="button" name="resetb" value="Limpiar Todo" onClick="location.href='./IntroArticulo/vaciararticulo.php';">
        </td>
    	</tr>
	</FORM> 
JAVASCRIPT --> llamada al Ajax des de comprueba (), comprueba () como su nombre indica que no esten los textbox vacios, si es así llama a la función enviarDatosCompra()
Código:
function enviarDatosCompra(){
  //donde se mostrará lo resultados
  divResultado = document.getElementById('resultado');
  divResultado.innerHTML= '<img src="../imagenes/anim.gif">';
  //valores de las cajas de texto
  art=document.formIMArticulo.Artista.value;
  dis=document.formIMArticulo.Disco.value;
  ima=document.formIMArticulo.Imagen.value;
  mp3=document.formIMArticulo.MP3.value;
  //instanciamos el objetoAjax
  ajax=objetoAjax();
  //uso del medoto POST
  //archivo que realizará la operacion
  //registro.php
  ajax.open("POST", "./IntroArticulo/registro.php",true);
  ajax.onreadystatechange=function() {
  if (ajax.readyState==4) {
  //mostrar resultados en esta capa
  divResultado.innerHTML = ajax.responseText
  //llamar a funcion para limpiar los inputs
  Limpiar();
  }
  }
  ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  //enviando los valores
  ajax.send("Artista="+art+"&Disco="+dis+"&Imagen="+ima+"&MP3="+mp3)
}
registro.php
Código PHP:
<?php
include_once("cEmpleado.php");

//variables POST

$art=$_POST['Artista'];
$dis=$_POST['Disco'];
$ima=$_POST['Imagen'];
$mp3=$_POST['MP3'];
sleep(2);

//creamos el objeto $objempleados y usamos su método crear
$objempleados=new cEmpleado;
if (
$objempleados->crear($art,$dis,$ima,$mp3)==true){  //La función crear es la que introduce en la tabla intermedia
    
echo "Registro grabado correctamente";
}else{
    echo 
"Error de grabacion el artículo ya existe";
}
include(
'consulta.php');
?>

Última edición por Kilofafeure; 05/05/2008 a las 17:08 Razón: Mejor explicación del problema
  #2 (permalink)  
Antiguo 05/05/2008, 20:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Orientacion para subir imágenes con Ajax a MySQL

Hola Kilofafeure,

Te recomiendo leas las FAQ's del foro, actualmente no hay forma de enviar archivos vía AJAX, la única forma de hacerlo es con un iframe oculto, o mandando directo al formulario PHP.

Saludos.
  #3 (permalink)  
Antiguo 06/05/2008, 01:47
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Re: Orientacion para subir imágenes con Ajax a MySQL

Cita:
Iniciado por GatorV Ver Mensaje
Hola Kilofafeure,

Te recomiendo leas las FAQ's del foro, actualmente no hay forma de enviar archivos vía AJAX, la única forma de hacerlo es con un iframe oculto, o mandando directo al formulario PHP.

Saludos.
Cierto.

Fíjate que el encabezado que usas Content-type es el básico para el método POST: application/x-www-form-urlencoded, y el enctype de los formularios con ficheros adjuntos es sí o sí multipart/form-data... y aunque pudieras usar esa cabecera (tengo entendido que no) los datos que puedes enviar vía ajax deben encontrarse en la página, y con javascript no puedes acceder a el sistema de archivos del cliente...

La verdad es que podría decirse que se puede usar la tecnología ajax por la comunicación asincrónoca con el servidor, pero sin el objeto ajax (XMLHttpRequest/ActiveX), sino enviando un formulario a un iframe, y recibiendo esa respuesta asincrónica con el método load del iframe...

Échale un vistazo a este artículo: Revisar las imágenes antes de subirlas

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 06/05/2008, 03:38
 
Fecha de Ingreso: noviembre-2006
Mensajes: 117
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Orientacion para subir imágenes con Ajax a MySQL

Gracias caricatos!!! es lo que necesitaba para poder hacerlo!!! por eso pedia si alguien me podía orientar porqué me parecía que no se podía hacer...muchas gracias...ahora mismo lo voy a probar.
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 20:04.