Foros del Web » Programando para Internet » Javascript »

subir imagenes con javascript

Estas en el tema de subir imagenes con javascript en el foro de Javascript en Foros del Web. hola foreos alguien que sepa como subir un archivo con javascript y php ._. pero que no sea con jquery, ni otra libreria ._. yo ...
  #1 (permalink)  
Antiguo 12/10/2011, 22:48
 
Fecha de Ingreso: septiembre-2011
Mensajes: 158
Antigüedad: 12 años, 7 meses
Puntos: 15
subir imagenes con javascript

hola foreos
alguien que sepa como subir un archivo con javascript y php ._.

pero que no sea con jquery, ni otra libreria ._.

yo lo estoy asiendo pero en javascript y ajax solo se pueden envair datos atrabes de post y ajax ._.

y en php necesito enviar datos para la bariable $_FILES['archivo'];

la verdad solo e logrado que me recoja la direccion del archivo ._.
si alguien save com aserlo?
  #2 (permalink)  
Antiguo 12/10/2011, 23:54
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: subir imagenes con javascript

Hola:

No es necesario ninguna librería, tan solo debes enviar ese formulario, pero se puede simular que es con Ajax, usando un iframe oculto (o no)... Revisar las imágenes antes de subirlas.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 13/10/2011, 08:18
Avatar de jrevilla  
Fecha de Ingreso: septiembre-2011
Ubicación: Lima, Peru, Peru
Mensajes: 51
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: subir imagenes con javascript

Lo mas simple, sin librerias.... USA SERVLETS pues, si quieres te pongo un ejemplo =)
  #4 (permalink)  
Antiguo 13/10/2011, 08:53
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: subir imagenes con javascript

Cita:
Iniciado por jrevilla Ver Mensaje
Lo mas simple, sin librerias.... USA SERVLETS pues, si quieres te pongo un ejemplo =)
te recuerdo que los servlets de java se ejecutan en el servidor y no tienen incidencia alguna con el cliente, el objetivo de subir una imágen por AJAX es no recargar la página, y eso es trasparente para el servidor, solo puede gestionarse desde el cliente, en este caso con un iframe
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 13/10/2011, 09:13
Avatar de jrevilla  
Fecha de Ingreso: septiembre-2011
Ubicación: Lima, Peru, Peru
Mensajes: 51
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: subir imagenes con javascript

a enserio.... bueno, pero creo q para eso hay varios JQuery cierto?
  #6 (permalink)  
Antiguo 13/10/2011, 09:23
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: subir imagenes con javascript

Cita:
Iniciado por jrevilla Ver Mensaje
a enserio.... bueno, pero creo q para eso hay varios JQuery cierto?
jQuery es un FW javascript, cuyo objetivo es brindar una alternativa crossbrowser al javascript nativo del navegador, por lo tanto es parte del cliente WEB

AJAX es una técnica que se basa en enviar contenido al servidor (PHP, JSP/Servlets, ASP, etc) sin recargar la página, se basa prácticamente en el uso del XmlHttpRequest que es un objeto en Javascript que permite enviar request HTTP y recibir la respuesta del server, brindando posibilidad de hacer webs interactivas (la llamada WEB 2.0), a lo sumo como técnica AJAX puede ser implementado de otros medios como un iframe.

lo ideal es que comprendas el concepto de la tecnología web, o mejor dicho los principios de las aplicaciones Cliente/Servidor y como interactuar con las mismas en el desarrollo de webs: estáticas, dinámicas o interactivas.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #7 (permalink)  
Antiguo 13/10/2011, 12:22
 
Fecha de Ingreso: septiembre-2011
Mensajes: 158
Antigüedad: 12 años, 7 meses
Puntos: 15
Respuesta: subir imagenes con javascript

gracias por su ayuda

pero no quiero usar jquery, o ningun plugin que tenga que depender del jquery
y tampoco quiero usar frames ya que ala hor ed validar el codigo es probable que me tiere muchos errores, tambien en caso de que falle el servidor no quiero ver ese cuadro que aparece cuando no hay internet en el frame :s

LOS FRAMES SON LA PEOR SOLUCION

y SERVLETS nose que sea jejeje ._.
jrevilla si gustas ponerme un ejemplo gracias XDD

NADAMAS QUE NO SE PROGRAMAR EN JAVA ._.
  #8 (permalink)  
Antiguo 13/10/2011, 12:25
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: subir imagenes con javascript

Cita:
Iniciado por dleal100 Ver Mensaje
gracias por su ayuda

pero no quiero usar jquery, o ningun plugin que tenga que depender del jquery
y tampoco quiero usar frames ya que ala hor ed validar el codigo es probable que me tiere muchos errores, tambien en caso de que falle el servidor no quiero ver ese cuadro que aparece cuando no hay internet en el frame :s

LOS FRAMES SON LA PEOR SOLUCION

y SERVLETS nose que sea jejeje ._.
jrevilla si gustas ponerme un ejemplo gracias XDD

NADAMAS QUE NO SE PROGRAMAR EN JAVA ._.
hablamos de <<"iframe">> no de frames/frameset, y por muy obsoletos que estén los framesets (no los iframes) nada tienen que ver con errores al tratar URL y errores HTTP 404.

y sí, la unica forma de emular un ajax upload es con un iframe, la cual es mucho más compatible en cuanto a navegadores que los plugins con flash, apples e incluso HTML5 File Api
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #9 (permalink)  
Antiguo 13/10/2011, 12:40
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: subir imagenes con javascript

Mira, si quieres estar en estos asuntos debes entender las cosas con precisión y no formarte prejuicios o dogmas con respecto a la tecnología que usas. Cuál es el problema con los frames o iframes? por qué no se recomienda su uso. Pues te diré, entre otras cosas porque los buscadores no pueden relacionar su contenido con el contenido de los otros frames. Este no es el caso no? Entonces no hay ningún problema, porque solo lo usarás para cargar un archivo. No habrá nada de contenido porque estará oculto. Aquí hay algo que te puede dar algunas luces al respecto:

http://www.forosdelweb.com/f4/cargar...iframe-304182/

Espero que te sirva.
  #10 (permalink)  
Antiguo 13/10/2011, 12:48
 
Fecha de Ingreso: septiembre-2011
Mensajes: 158
Antigüedad: 12 años, 7 meses
Puntos: 15
Respuesta: subir imagenes con javascript

ya me lo sospechava ._.
entocnes nadie save .-.

Cita:
Iniciado por Artificium Ver Mensaje
Mira, si quieres estar en estos asuntos debes entender las cosas con precisión y no formarte prejuicios o dogmas con respecto a la tecnología que usas. Cuál es el problema con los frames o iframes? por qué no se recomienda su uso. Pues te diré, entre otras cosas porque los buscadores no pueden relacionar su contenido con el contenido de los otros frames. Este no es el caso no? Entonces no hay ningún problema, porque solo lo usarás para cargar un archivo. No habrá nada de contenido porque estará oculto. Aquí hay algo que te puede dar algunas luces al respecto:

[url]http://www.forosdelweb.com/f4/cargar-archivo-iframe-304182/[/url]

Espero que te sirva.
bueno mi web esta en XHTML de transitional si uviera querido usar iframes uviera usado la opcion de frameset.dtd
  #11 (permalink)  
Antiguo 13/10/2011, 13:18
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: subir imagenes con javascript

Si, nadie sabía (con B labial) que usabas XHTML de transitional y no veo la razón por la cual no puedas cambiarlo a frameset, ahora, hay otra alternativa, pero por lo pronto varios navegadores no lo soportarían. Creo que ya te la recomendaron.
  #12 (permalink)  
Antiguo 13/10/2011, 13:22
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: subir imagenes con javascript

Cita:
Iniciado por dleal100 Ver Mensaje
ya me lo sospechava ._.
entocnes nadie save .-.



bueno mi web esta en XHTML de transitional si uviera querido usar iframes uviera usado la opcion de frameset.dtd
¿sabes la diferencia entre un iframe y frameset?, para empezar un iframe NO necesita un frameset, son 2 cosas distintas, y si no quieres usar iframes no te quedan más opciones que flash, applets o HTML5 FileAPI, porque entiende: javascript NO tiene acceso al IO
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #13 (permalink)  
Antiguo 13/10/2011, 13:29
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: subir imagenes con javascript

Cita:
Iniciado por Artificium Ver Mensaje
Si, nadie sabía (con B labial) que usabas XHTML de transitional y no veo la razón por la cual no puedas cambiarlo a frameset, ahora, hay otra alternativa, pero por lo pronto varios navegadores no lo soportarían. Creo que ya te la recomendaron.
Sorry, no sabía que el uso de iframes no necesitaba un doctype frameset.
  #14 (permalink)  
Antiguo 13/10/2011, 13:42
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: subir imagenes con javascript

Cita:
Iniciado por Artificium Ver Mensaje
Sorry, no sabía que el uso de iframes no necesitaba un doctype frameset.
no necesariamente, en el estándar XHTML 1.1 strict no se recomienda su uso, en cambio se sustituye con "object":

Código HTML:
Ver original
  1. <object id="page" type="text/html" data="page.htm" width="500" height="600">
  2.   <p>Oops! That didn't work...</p>

fuente:

http://stackoverflow.com/questions/1...-we-use-iframe
http://www.w3.org/TR/REC-html40/stru...ts.html#h-13.5

pero en escencia es un iframe, no un frameset
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #15 (permalink)  
Antiguo 13/10/2011, 17:08
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: subir imagenes con javascript

Hola:

No sé porqué, parece que no has leído el artículo del enlace que puse...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #16 (permalink)  
Antiguo 13/10/2011, 20:17
 
Fecha de Ingreso: septiembre-2011
Mensajes: 158
Antigüedad: 12 años, 7 meses
Puntos: 15
Respuesta: subir imagenes con javascript

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

No sé porqué, parece que no has leído el artículo del enlace que puse...

Saludos

jajaja si probe tu link :s
y esa cosa usa sessiones :s
y tambien usa frames detodas formas ya me cance ._.

boy a subir archivos con simple php ._.

PD: aca les dejo lo que yebaba de mi codigo esque no puedo enviar el $_FILES['archivo']['tmp_name'] por ajax ._. intente enviarlo por el POST pero no pude aca les dejo lo que yevava ._. por si alguien logra aserlo ._.

Código:
<html>
<head>
<script type="text/javascript">
function yo(file) {
var mostrar=document.getElementById("mostrar");
var caca= document.getElementById("caca");
caca.innerHTML= file+"<br /><img src='file:///"+file+"'>";

if(window.XMLHttpRequest)
{var u= new XMLHttpRequest();}
else{var u= new ActiveXObject("Microsoft.XMLHTTP");}

u.onreadystatechange=function(){

if(u.readyState==4 && u.status==200)
{mostrar.innerHTML=u.responseText;}
else{mostrar.innerHTML="<h1>Cargando...</h1>";}//mensaje cargando :3
}
u.open("POST","imagen_user.php", true); //aca envias los datos a imagen_user.php
u.setRequestHeader("Content-type","application/x-www-form-urlencoded");
u.send("archivo="+file);


}
</script>
</head>
<body>
<div id="mostrar"></div>
<div id="caca" style='background-color:#CCC; width:300px; height:300px;'></div>
Copiar dentro del tag BODY 
<form method="post" name="upform" action="cgi-bin/tu-script.cgi"
enctype="multipart/form-data">
<p><input type="file" name="archivo"> <input type="button" name="Submit" value="Enviar"
onclick="yo(form.archivo.value)"> </p>
</form>


</body>
</html>
Código:
<?php
//lo guardan como imagen_user.php
if($_FILES['archivo']['tmp_name']!=""){
echo $tmp=$_FILES['archivo']['tmp_name'];
}
else{echo $tmp=$_POST["archivo"];}


$nombre= date("DMYgis").$_FILES['archivo']['name']; //sobreescribimos el nombre de la imagen
$separador=explode(".",$nombre); //separamos el nombre de la imagen
$solo_nombre=$separador[0]; //nombre de la imagen
$extension=$separador[1]; //extencion ejemplo jpg, gif, png, etc...


if(move_uploaded_file($tmp,"imagenes/$nombre")) //movemos la imagen asia la carpeta que se llama "user"
{
echo "la imagen se suvio con exito";
}
else{echo "error al guardar la imagen";}

?>
  #17 (permalink)  
Antiguo 14/10/2011, 01:15
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: subir imagenes con javascript

Hola:

Verás, las sesiones solo sirven para mostrar la imagen, pero si solo quieres subir la imagen no es necesario.

...Y viendo tu código, parece que no te has enterado que los objetos Ajax no sirven de nada (XMLHttpRequest)... Intentaré poner el código necesario en pocas líneas...

Código:
<form action="imagen_user.php" method="post" target="ventana" enctype="multipart/form-data" >
<input type="file" name="archivo" />
<button type="submit" >subir</button>
</form>
<iframe name="ventana" style="display: none" ></iframe>
Con esas pocas líneas envías el fichero a un iframe oculto (lo que puse al principio)... luego, si no quieres el botón debes programar el evento change del control file...

Código:
onchange="this.form.submit()"
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #18 (permalink)  
Antiguo 14/10/2011, 05:39
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: subir imagenes con javascript

Hasta ahora no entiendo porque sigues negándote a usar un iframe que no es lo mismo que frame y que tu doctype si funciona. Cual es el problema con el iframe ahora?
  #19 (permalink)  
Antiguo 14/10/2011, 07:35
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: subir imagenes con javascript

Cita:
Iniciado por Artificium Ver Mensaje
Hasta ahora no entiendo porque sigues negándote a usar un iframe que no es lo mismo que frame y que tu doctype si funciona. Cual es el problema con el iframe ahora?
es caso perdido amigo, no malgastemos más tiempo tratando de que entienda que un iframe no es un frame, no se le pueden pedir peras al olmo
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #20 (permalink)  
Antiguo 14/10/2011, 13:58
 
Fecha de Ingreso: septiembre-2011
Mensajes: 158
Antigüedad: 12 años, 7 meses
Puntos: 15
Respuesta: subir imagenes con javascript

bueno pues despues de casi 3 dias :s
esta fue la solucion tuve que usar iframes e_e
lo que luego se me ase raro es que en las librerias que dependen de jquery no usen iframes, o almenos que añadan nodos de iframes en nuestro docuemnto web y no nosdemos cuentas,

sigo pensando que se puede aser sin iframes, pero mis conocimientos no dan para mas...

bueno aca les dejo la solucion por si alguien le interesa :S
Código:
<?php
//Directorio donde se va almacenar la img o archivo.
$upload_dir = "imagenes";
if (isset($_POST['fileframe'])){
   $result = 'ERROR';
 
if (isset($_FILES['file'])){
if ($_FILES['file']['error'] == UPLOAD_ERR_OK){
 
//Obteniendo el nombre del archivo
$filename = date("DMYgis").$_FILES['file']['name'];
 
//Moviendo el archivo al directorio indicado arriba
move_uploaded_file($_FILES['file']['tmp_name'], $upload_dir.'/'.$filename);
 
//Cambiando el status del result
$result = 'OK';
}
}
 
echo '<html><head></head><body>';
echo '<script type="text/javascript">'."\n";
echo 'var Doc = window.parent.document;';
 
if ($result == 'OK'){
   //Asignando los valores a los distintos input
   echo 'Doc.getElementById("status").innerHTML = "El Archivo ha sido cargado...";';
   echo 'Doc.getElementById("img").src="'.$upload_dir.'/'.$filename.'";';
}
else{
   echo 'Doc.getElementById("status").innerHTML = "ERROR al Subir Archivo";';
}
 
echo "\n".'</script></body></html>';
 
exit();
}
?>
 
<!-- Inicio de la página principal -->
<html><head>
<title>Subir Archivo con PHP y AJAX</title>
<script type="text/javascript">
function subirArchivo(upload_field){
   //Aqui se puede agregar otras extensiones...
   var re_text = /\.gif|\.jpg|\.png/i;
   var filename = upload_field.value;
 
   // Verificando que el tipo.
   if (filename.search(re_text) == -1){
      alert("El archivo no es de tipo(.jpg, .png) extension ");
      upload_field.form.reset();
      return false;
}
 
   upload_field.form.submit();
   document.getElementById('status').innerHTML = "Subiendo Archivo...";
   return true;
}
</script>

</head>
<body>

<!--Aqui podemos colocar una imagen por defecto-->
<img id="img" src="" width="128"/>
 
<form action="#" target="upload_iframe" method="post" enctype="multipart/form-data">
<input type="hidden" name="fileframe" value="true">
<input type="file" name="file" id="file" onChange="subirArchivo(this)">
</form>
 

<iframe name="upload_iframe" style="width: 400px; height: 100px; display:none;"></iframe>
 
Status:<div id="status"></div>


</body>
</html>
  #21 (permalink)  
Antiguo 14/10/2011, 17:56
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: subir imagenes con javascript

Hola:

Cita:
Iniciado por dleal100 Ver Mensaje
...sigo pensando que se puede aser sin iframes, pero mis conocimientos no dan para mas...
Verás, Ajax no permite el enctype para subir archivos (enctype -> setRequestHeader), y de los datos, sea el método que sea, se envían los contenidos... y ¿cómo crees que javascript puede conocer los bytes de un archivo...?

No entiendo del código, las líneas: return true/false...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Etiquetas: imagenes, php
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 08:46.