Subir Archivos Con PHP y JQuery - Uno de Piera
Subir Archivos Con PHP y JQuery - Uno de Piera
Subir Archivos Con PHP y JQuery - Uno de Piera
Qu ests buscando?
PHP
JAVASCRIPT
RUBY ON RAILS
JAVA
FOROS
CURSOS
CONTACTO
PYTHON
ACCEDER
3 Aos Ago
DESARROLLO
PROFESIONAL
PHP
126 Comentarios
ANTERIOR
SIGUIENTE
CURSO DE
ANGULAR 2.0
CURSO DE
LARAVEL 5.3
NUEVO CURSO
DE TOTAL.JS
Vamos a ver como es posible subir archivos con php y jQuery
de forma realmente sencilla sin la necesidad de utilizar
plugins. Sea dicho que un plugin no slo sube archivos, sino
que siempre tienen ms opciones y muy tiles, pero no a todo
el mundo le gusta, as que vamos a ver otra opcin muy
interesante.
Cabe decir que este script es funcional con todos los
navegadores actuales, es una cosa muy importante y a tener
CURSO
COMPLETO DE
WORDPRESS
en cuenta.
Quede claro que a la hora de utilizarlo en un servidor en
produccin, hay que hacer el proceso de seguridad, ya que
nosotros no lo vamos a llevar a cabo. Esto simplemente viene
a ser modificar el nombre del archivo y comprobar los tipos
de archivo que queremos permitir, no podemos dejar entrar
cualquier cosa o podemos tener problemas.
CURSO DE
CODEIGNITER 3
CURSO
EXPRESS DE
LUMEN 5.3
X
Aprende
a
desarrollar
aplicaciones
para
web
y
mvil
con
los
cursos
de
estructura:
Uso siguiente
de cookies
cursosdesarrolloweb.es
Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si contina navegando est dando su
consentimiento para la aceptacin de las mencionadas cookies y la aceptacin de nuestra poltica de cookies, pinche el
Un
archivo
llamado index.php, aqu ser donde creemos el
enlace
para
mayor informacin.
ACEPTAR
formulario y los divs donde iremos mostrando
informacin
CURSO DE
JQUERY
COMPLETO
CURSO DE
PHALCON 3
bloque switch.
Tambin debemos crear el archivo upload.php, aqu ser
donde procesemos el archivo, lo guardemos, y retornemos
una respuesta a javascript para saber si todo ha salido bien.
Finalmente deberemos crear un archivo .htaccess para evitar
tener problemas con el tamao de los archivos, sto siempre
ser til para nuestros proyectos.
CURSO DE
SOCKETIO CON
NODEJS
CURSO DE PHP
7 AVANZADO
1 <html>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<head>
<title></title>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/
<script type="text/javascript" src="functions.js"
<style type="text/css">
.messages{
float: left;
font-family: sans-serif;
display: none;
CURSO DE
}
.info{
ADONISJS
padding: 10px;
border-radius: 10px;
background: orange;
color: #fff;
font-size: 18px;
text-align: center;
}
.before{
padding: 10px;
border-radius: 10px;
background: blue;
color: #fff;
font-size: 18px;
text-align: center;
}
.success{
padding: 10px;
border-radius: 10px;
background: green;
color: #fff;
font-size: 18px;
text-align: center;
}
.error{
padding: 10px;
border-radius: 10px;
background: red;
color: #fff;
font-size: 18px;
text-align: center;
}
</style>
</head>
<body>
<!--el enctype debe soportar subida de archivos con multipart/form-data-->
<form enctype="multipart/form-data" class=
<label>Subir un archivo</label><br />
<input name="archivo" type="file" id="imagen"
<input type="button" value="Subir imagen"
</form>
<!--div para visualizar mensajes-->
<div class="messages"></div><br /><br />
<!--div para visualizar en el caso de imagen-->
<div class="showImage"></div>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
$(document).ready(function(){
$(".messages").hide();
//queremos que esta variable sea global
var fileExtension = "";
//funcin que observa los cambios del campo file y obtiene informacin
$(':file').change(function()
{
//obtenemos un array con los datos del archivo
var file = $("#imagen")[0].files[0];
//obtenemos el nombre del archivo
var fileName = file.name;
//obtenemos la extensin del archivo
fileExtension = fileName.substring(fileName
//obtenemos el tamao del archivo
var fileSize = file.size;
//obtenemos el tipo de archivo image/png ejemplo
var fileType = file.type;
//mensaje con la informacin del archivo
showMessage("<span class='info'>Archivo para subir: "
});
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
//comprobamos que sea una peticin ajax
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) &&
{
ANTERIOR
SIGUIENTE
POSTS RELACIONADOS
Introducci
n al SDK
de Paypal,
conseguir
las claves
Israel965
9 Julio,
Introducci
n a las
interfaces
en php
EL patrn
Singleton
en php
Israel965
13
1 Mayo,
Noviembre,
2015
2012
Israel965
2016
Aadir
paypal a
nuestro
carrito de
compras
Capturar
mltiples
eventos
en jQuery
ClearDB
en Heroku,
trabajando
con mysql
Israel965
Israel965
Israel965
24 Agosto,
17
12 Octubre,
2013
Noviembre,
2014
2013
Israel965
126 COMENTARIOS
Alessandro Degiusti
22 Septiembre, 2013
Saludos!
Responder
israel965
Autor
22 Septiembre, 2013
Eduardo
Autor
11 Enero, 2014
Manuel
Autor
13 Mayo, 2014
Reycop
18 Noviembre, 2013
israel965
Autor
18 Noviembre, 2013
Fcil,
En el success de la funcin jQuery que sube la
imagen debes obtener su nombre y mostrarlo en el
div, es sencillo, saludos.
Responder
JM
26 Noviembre, 2013
israel965
Autor
26 Noviembre, 2013
Alex
5 Diciembre, 2013
Fer
17 Diciembre, 2013
Ya coloque el .htaccess lo de
Responder
israel965
Autor
17 Diciembre, 2013
Fer
17 Diciembre, 2013
israel965
Autor
17 Diciembre, 2013
jesus
17 Diciembre, 2013
israel965
Autor
17 Diciembre, 2013
Fer
17 Diciembre, 2013
israel965
Autor
17 Diciembre, 2013
angel
27 Diciembre, 2013
Alexis
2 Enero, 2014
Manuel
10 Enero, 2014
Hola,
Alguien sabria exponer el motivo exacto por el cul no
funciona en Internet explorer 9?
Gracias de antemano.
Manuel.
Responder
Eduardo
12 Enero, 2014
Luis
20 Febrero, 2014
Buenas.
Me pas algo, cuanto menos curioso y que me tuvo ocupado
casi un da entero antes de conseguir solucionarlo.
Como ya tena hecho el formulario en HTML5 no copi el
cdigo HTML de ejemplo.
No consegua que la llamada ajax funcionara. Daba errores
continuamente.
El problema radicaba en que en lugar de un <input
type=button. > estaba usando un
<button>Enviar</button>.
Por algun motivo que desconozco funciona con el input y no
funciona con el button.
Fuera de eso el cdigo es impecable. Gracias por compartirlo.
Responder
israel965
Autor
20 Febrero, 2014
Hola Luis,
Gracias por dejar esa curiosidad, siempre es
bienvenido todo lo que nos podamos encontrar
programando, seguro que a alguien le sirve, y
gracias por dejar tu comentario, un saludo.
Responder
Elio Castro
21 Febrero, 2014
Buenas noches
Te agradesco el que compratas tus conocimientos,
sinceramente no tenia concimiento de la manera de subir un
archivo mediante post. tambien es la primera vez que
visualizo un switch con los case consecutivos.
Sin embargo a tu codigo en el archivo functions.js podria ser
mas profecional
Razones:
$(.messages).html() hacer esto es inutl y la creacion del
metedo que la integra tambien
Todo la funcion ajax puede ser escrito en un .post() y se
resume eficientemente
y tu index deberia ser .html no .php
Saludos
Responder
israel965
Autor
21 Febrero, 2014
Hola,
Si te gusta tener todo el cdigo sin que ste pueda
ser reutilizado est bien meterlo todo en la misma
funcin, desde luego yo no lo hago nunca.
El que antes de nada se limpie el div messages en
este caso si que es cierto que no es necesario.
Como programo mucho con php, los archivos los
creo en php, creo que no es grave, adems que me
permite introducir cdigo php por si me interesa,
llmalo como quieras segn tus necesidades.
Gracias por comentar.
Responder
lucas
8 Marzo, 2014
Me gusta tutorial.
gracias,
seria estupendo poder seleccionar varios imagenes a la vez y
subirlos.
Ya voy a investigar como lograrlo , pero si sabes como , porfa
compartelo.
Responder
Carlos
16 Marzo, 2014
pablo
30 Abril, 2014
Hola.
Primero decir que me ha ayudado mucho el post y
agradecertelo.
Pero tengo un problema, el fichero no me recoge ningun dato
mi codigo de formulario es
<form enctype=multipart/form-data class=formulario>
Seleccione destinatario:<select name=usu id=usu >
</select> <br />
<input type=file name=docload id=docload />
<input type=button value=Enviar name=submitbtn
id=submitbtn>
</form>
y el ajax :
enviado.
cache: false,
contentType: false,
processData: false,
success: function(data)
{
$(#viewimage).html(data); // Mostrar la respuestas del
script PHP.
}
});
luis
3 Mayo, 2014
parcero susede que tal como esta ene le post esta bien
la rason por la q no le recoje datos o se supone q no te
recoje datos es por que no es un submit q es le boton
que envia el form y como los datos los estas
mandando por post con un boton que se ejecute con
javascript para que veas se te recoje datos de tu form
sencillo cojes en tu php y colocas un print_r($_POST);
// para datos post se deseas ver los datos que te recoje
del enctype sencillo colocas un print_r($_FILES)
Responder
Manuel
13 Mayo, 2014
por parte de php para validar los archivos a subir, mil gracias
por el aporte.
Responder
israel965
Autor
13 Mayo, 2014
Pablo
13 Mayo, 2014
israel965
Autor
13 Mayo, 2014
luis
16 Junio, 2014
israel965
Autor
16 Junio, 2014
18 Julio, 2014
israel965
Autor
18 Julio, 2014
Andres Ramos
3 Agosto, 2014
israel965
Autor
3 Agosto, 2014
Ivan dcg
11 Agosto, 2014
1
2
3
4
No se si sea correcto
Responder
israel965
Autor
11 Agosto, 2014
Hola,
La funcin isImage hace exactamente eso, slo que
devuelve false cuando no es una imagen, as que
puedes utilizarlo para cuando sea una imagen o un
archivo.
Gracias por tu comentario, me alegro que te haya
servido.
Puede que esto tambin te sirva.
Saludos.
Responder
Ivan dcg
Autor
11 Agosto, 2014
Brayan
7 Septiembre, 2014
Excelente!,
Muchas gracias, me ayudar mucho para un trabajo que
tengo que presentar
Responder
israel965
Autor
7 Septiembre, 2014
Fredy salazar
28 Septiembre, 2014
israel965
Autor
28 Septiembre, 2014
Hola,
Has aadido el archivo htaccess?, de todas formas,
deberas ver que contiene el objeto error de la
seccin error de ajax, a ver que est pasando, pero
seguro que tiene que ver con el htaccess y el
tamao mximo permitido.
Saludos.
Responder
Fredy salazar
Autor
28 Septiembre, 2014
{
$(#myModal).modal(show);
$(#bodymodal).text(Procesando);
}
function llegadatres(datos)
{
$(#myModal).modal(show);
$(#bodymodal).html(datos);
}
function problemastres()
{
$(#bodymodal).text(Se ha presentado un
error con el servidor L141);
}
Gracias !!
Responder
israel965
Autor
28 Septiembre, 2014
Hola,
Si por ejemplo, tus archivos deben ser
cmo mximo pero permitidos de
100mb, tu .htaccess debe tener.
PHP
1 php_value upload_max_filesize
2 php_value post_max_size 100M
Fredy salazar
Autor
28
Septiembre, 2014
Hola
Ya lo sub pero me sigue botando el
mensaje que esta en el funcin
problemas y me estoy dando
cuenta que es algun problema con
el peso pues no me permite enviar
un archivo que pese mas de 159 kb,
que puede ser ? el servidor ?
israel965
Autor
28
Septiembre, 2014
Fredy salazar
28 Septiembre, 2014
Hola mira
Pues aparece en su orden as la verdad no entiendo su
definicin.
POST 500
Internal Server Error
text/html
jquery.js:4
Script
177B
4B
3.08s
3.08s
Responder
israel965
Autor
28 Septiembre, 2014
Hola,
De momento tienes un error 500 en el server, haz
pruebas con diferentes archivos, no te puedo decir
nada ms porqu a mi el mismo cdigo me
funciona bien, lo he probado y he podido subir
archivos de 100mb sin problemas.
Saludos.
Responder
Joaquin
30 Octubre, 2014
Buenos dias
Felicidades, es un muy buen tutorial, me sirvio mucho.
He estado modificandolo un poco para darle mayor
funcionalidad, pero me surgio un problema.
En el Archivo upload.php haces el retorno mediante echo
$file;, si lo quiero retornar en un formato json lo hago
mediante echo json_encode($file);, Que cambios tengo que
hacer en el archivo functions.js para que me interprete la
respuesta en formato json?
De antemano muchas gracias
Responder
israel965
Autor
30 Octubre, 2014
Hola,
Gracias, me alegro que te guste, aade el dataType:
json a la peticin ajax, as en el success tendrs el
json en data ya parseado y no tendrs que hacer
nada ms.
Saludos.
Responder
Joaquin
Autor
30 Octubre, 2014
israel965
Autor
30 Octubre, 2014
Responder
Joaquin
Autor
30 Octubre, 2014
israel965
Autor
30 Octubre, 2014
Hola,
Haz:
JavaScript
1 JSON.stringify(mal);
Responder
Joaquin
30 Octubre, 2014
{readyState:4,responseText:Correcto\n[[\Imagen.jpg\,\true\,true]],status:200,statusText:OK}
israel965
Autor
30 Octubre, 2014
Hola,
Si te das cuenta te est devolviendo un status 200,
lo que significa que todo ha ido bien:
JavaScript
1 {readyState:4,responseText:Correcto
Joaquin
Autor
30 Octubre, 2014
Joaquin
31 Octubre, 2014
israel965
Autor
31 Octubre, 2014
Joaquin
Autor
31 Octubre, 2014
Gracias a ti
Me hace falta estudiar mucho para evitar
futuros errores de este tipo
Saludos Israel
Responder
israel965
Autor
31 Octubre, 2014
jankarlos
6 Noviembre, 2014
israel965
Autor
7 Noviembre, 2014
jankarlos
Autor
7 Noviembre, 2014
sact
10 Noviembre, 2014
Joaquin
10 Noviembre, 2014
1
2
3
4
5
if(!is_dir("files/"))
mkdir("files/", 0777);
sact
12 Noviembre, 2014
Repto
13 Noviembre, 2014
israel965
Autor
13 Noviembre, 2014
Hola,
Lo mejor es que la comprobacin la hagas en el
servidor.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$finfo = finfo_open(FILEINFO_MIME_TYPE
$mime = finfo_file($finfo, $_FILES['archivo'
$isPdf = false;
switch ($mime) {
case 'application/pdf':
$isPdf = true;
default:
die("Tipo de archivo no permitido"
}
Marcela
19 Noviembre, 2014
israel965
Autor
19 Noviembre, 2014
Hola,
Si necesitas algo visual te recomiendo dropzone,
tiene todo lo que necesitas.
Saludos.
Responder
sact
21 Noviembre, 2014
israel965
Autor
21 Noviembre, 2014
Hola,
El ejemplo del tutorial est hecho y probado tanto
en windows como en linux, qu errores tienes?
Responder
sact
Autor
21 Noviembre, 2014
sact
Autor
25 Noviembre, 2014
msolis86
6 Diciembre, 2014
Juan
8 Diciembre, 2014
Solucionates?
Responder
msolis86
9 Diciembre, 2014
Sajies26
16 Diciembre, 2014
israel965
Autor
16 Diciembre, 2014
Hola,
Te recomiendo este plugin para cambiar el diseo
de los campos de tipo file.
Saludos.
Responder
Esteban
27 Diciembre, 2014
israel965
Autor
Muchas gracias.
27 Diciembre, 2014
Responder
Josep
29 Diciembre, 2014
israel965
Autor
29 Diciembre, 2014
Hola,
La variable archivo es el nombre del campo de tipo
file del formulario.
Revisa los pasos porque funciona correctamente.
Saludos.
Responder
Jose
23 Febrero, 2015
Adrian Bergonzi
5 Marzo, 2015
israel965
Autor
5 Marzo, 2015
Hola,
new HTMLFormElement($(.formulario)[0])???
No es new FormData($(.formulario)[0])?
Saludos.
Responder
Adrian Bergonzi
Autor
5 Marzo, 2015
israel965
Autor
5 Marzo, 2015
Hola,
Puedes utilizar append de la siguiente
forma sin pasar parmetros al
constructor.
JavaScript
Saludos.
Responder
Adrian Bergonzi
Autor
Marzo, 2015
israel965
Autor
5 Marzo,
2015
Hola,
Aunque parezca que sea
empezar de nuevo, esta entrada
te puede ser muy til, esta otra
con dropzone tambin te puede
servir.
Saludos.
Enrique Hellmers
11 Marzo, 2015
Enrique Hellmers
11 Marzo, 2015
Responder
Ariel
12 Marzo, 2015
israel965
Autor
13 Marzo, 2015
Arturo Gonzalez
20 Mayo, 2015
israel965
Autor
20 Mayo, 2015
Hola,
Este tutorial hace justamente lo que necesitas.
Saludos.
Responder
Elisabeth
26 Mayo, 2015
Hola Israel!
Llevo varias semanas leyendo tutoriales de tu web, y me han
sido de gran ayuda. Me he empapado de jquery, ajax, json
israel965
Autor
26 Mayo, 2015
Hola,
Para subida masiva te recomiendo dropzone, te vas
a ahorrar muchas horas de trabajo, aqu tienes un
videotutorial donde lo implementamos con php,
pasarlo a codeigniter es sencillo.
Saludos.
Responder
Elisabeth
Autor
26 Mayo, 2015
Manuela
1 Julio, 2015
israel965
Autor
1 Julio, 2015
Hola,
Lo mejor que puedes hacer en esos casos es
deshabilitar el botn y no est de ms utilizar
stopPropagation.
JavaScript
Saludos.
Responder
Manuela
Autor
3 Julio, 2015
oidos.
Saludos
Responder
Manuela
Autor
7 Julio, 2015
israel965
Autor
7 Julio, 2015
8 Julio, 2015
Buenas Tardes,
Te felicito por el cdigo muy simple de entender, pero tengo
una duda, en un formulario que tenga mas archivos, intento
crear un objeto para enviarlo pero no me funciona, lo intento
as:
tambin lo intente con la solucin que dieron anteriormente :
var formData = new FormData($(form#formformulario)[0]);
pero tampoco me funciona, si tiene alguna solucin le
agradecera mucho.
Muchas gracias.
Responder
8 Julio, 2015
http://fotos.subefotos.com/892642d5e74075f40bae7925880e8c5bo.png
que pena tantos mensajes, si no que no encontraba
como subir imagenes me generaba error ese es el
link =P
Responder
Fabio
14 Julio, 2015
Hola,
Existe la posibilidad de enviar la informacin mediante ajax a
un controlador de CodeIgniter, para luego subir el archivo
mediante CodeIgniter propiamente?
Supongo que ser igual, enviando por post el archivo al
controlador, pero por mas que le hago no puedo; no
encuentro ni errores ni nada en el script y el explorador no me
tira ningn error en consola.
Gracias.
Responder
Daniel
18 Julio, 2015
israel965
Autor
18 Julio, 2015
Hola,
Muchas gracias, aqu tienes otra entrada que es
compatible, utilizamos un plugin que lo hace todo
de forma dinmica.
Saludos.
Responder
Daniel
18 Julio, 2015
Marina
13 Noviembre, 2015
israel965
Autor
14 Noviembre, 2015
Hola,
Cuando haces submit de un formulario, con jQuery
puedes hacer lo siguiente.
JavaScript
1
2
3
4
5
6
7
$(document).ready(function(){
$("form").on("submit", function(e)
e.preventDefault();
var form = $(this); //este es el formulario sobre el que hayas h
console.log(form.serialize());
})
})
Karina
13 Noviembre, 2015
israel965
Autor
14 Noviembre, 2015
Manuel
18 Noviembre, 2015
Hola
Por los ficheros php que hablas, he de entender que estas