¿Puedo usar el siguiente código jQuery para realizar la carga de archivos usando el método POST de una solicitud ajax?
$.ajax({
type: "POST",
timeout: 50000,
url: url,
data: dataString,
success: function (data) {
alert('success');
return false;
}
});
Si es posible, ¿necesito llenar data
parte? ¿Es la forma correcta? Solo publico el archivo en el lado del servidor.
He estado buscando en Google, pero lo que encontré fue un complemento, mientras que en mi plan no quiero usarlo. Al menos por el momento.
javascript
jquery
ajax
post
file-upload
Colita
fuente
fuente
Respuestas:
La carga de archivos
noes posible a través de AJAX.Puede cargar el archivo, sin actualizar la página utilizando
IFrame
.Puede consultar más detalles aquí .
ACTUALIZAR
Con XHR2, se admite la carga de archivos a través de AJAX. Por ejemplo, a través del
FormData
objeto, pero desafortunadamente no es compatible con todos los navegadores antiguos.FormData
el soporte comienza desde las siguientes versiones de navegadores de escritorio.Para más detalles, vea el enlace MDN .
fuente
enctype
en"form/multipart"
!Iframes ya no es necesario para cargar archivos a través de ajax. Recientemente lo hice solo. Mira estas páginas:
Uso de cargas de archivos HTML5 con AJAX y jQuery
http://dev.w3.org/2006/webapi/FileAPI/#FileReader-interface
Actualicé la respuesta y la limpié. Use la función getSize para verificar el tamaño o use la función getType para verificar los tipos. Se agregó código de barra de progreso html y css.
Cómo usar la clase Upload
Código html de barra de progreso
Código css de barra de progreso
fuente
writer(catchFile)
. ¿Qué eswriter()
?La publicación de Ajax y el archivo de carga es posible. Estoy usando la
jQuery $.ajax
función para cargar mis archivos. Traté de usar el objeto XHR pero no pude obtener resultados en el lado del servidor con PHP.Como puede ver, debe crear un objeto FormData, vacío o desde (¿serializado? -
$('#yourForm').serialize())
formulario existente), y luego adjuntar el archivo de entrada.Aquí hay más información: - Cómo cargar un archivo usando jQuery.ajax y FormData - Subiendo archivos a través de jQuery, se proporciona el objeto FormData y no hay nombre de archivo, solicitud GET
Para el proceso PHP puedes usar algo como esto:
fuente
formData.append('file', $('#file')[0].files[0]);
regresaundefined
yconsole.log(formData)
no tiene nada excepto_proto_
var formData = new FormData(); formData.append('file', document.getElementById('file').files[0]); $.ajax({ url : $("form[name='uploadPhoto']").attr("action"), type : 'POST', data : formData, processData: false, // tell jQuery not to process the data contentType: false, // tell jQuery not to set contentType success : function(data) { console.log(data); alert(data); } });
Formulario de carga simple
fuente
Llegué bastante tarde a esto, pero estaba buscando una solución de carga de imágenes basada en ajax y la respuesta que estaba buscando estaba un poco dispersa en esta publicación. La solución que decidí involucraba el objeto FormData. Reuní una forma básica del código que armé. Puede ver que muestra cómo agregar un campo personalizado al formulario con fd.append () y cómo manejar los datos de respuesta cuando se realiza la solicitud ajax.
Subir html:
En caso de que esté trabajando con php, aquí hay una forma de manejar la carga que incluye el uso de los dos campos personalizados que se muestran en el html anterior.
Upload.php
fuente
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https,
por qué es esto, señor, así que copiar y pegar el código, ya que esfile://
, en lugar de utilizar un servidor web? Por otro lado, no es la mejor práctica simplemente copiar y pegar código a ciegas sin primero entenderlo. Te recomendaría que revises el código línea por línea para comprender lo que está sucediendo antes de usar el código.Una carga AJAX es realmente posible con
XMLHttpRequest()
. No hay iframes necesarios. Se puede mostrar el progreso de carga.Para obtener más información, consulte: Responda https://stackoverflow.com/a/4943774/873282 a la pregunta jQuery Upload Progress y AJAX file upload .
fuente
Así es como lo hice funcionar:
HTML
JS
PHP
fuente
$('#file')[0].files[0]
que es una especie de solución extraña de JS sin requerir una adecuada<form>
En caso de que quieras hacerlo así:
que
https://github.com/lgersman/jquery.orangevolt-ampere/blob/master/src/jquery.upload.js
Podría ser tu solución.
fuente
Más detalles en mi blog: http://blog.manki.in/2011/08/ajax-fie-upload.html .
fuente
editar: Tenga en cuenta el tipo de contenido y los datos de proceso. Simplemente puede usar esto para cargar archivos a través de Ajax ...... la entrada de envío no puede estar fuera del elemento de formulario :)
fuente
Actualización 2019:
html
js
views.py
fuente
Use FormData. Funciona muy bien :-) ...
fuente
He implementado una selección de archivos múltiples con vista previa instantánea y carga después de eliminar archivos no deseados de la vista previa a través de ajax.
La documentación detallada se puede encontrar aquí: http://anasthecoder.blogspot.ae/2014/12/multi-file-select-preview-without.html
Demostración: http://jsfiddle.net/anas/6v8Kz/7/embedded/result/
jsFiddle: http://jsfiddle.net/anas/6v8Kz/7/
Javascript:
fuente
Los he manejado en un código simple. Puede descargar una demostración funcional desde aquí
Para su caso, estos muy posibles. Le explicaré paso a paso cómo puede cargar un archivo en el servidor utilizando AJAX jquery.
Primero, creemos un archivo HTML para agregar el siguiente elemento de archivo de formulario como se muestra a continuación.
En segundo lugar, cree un archivo jquery.js y agregue el siguiente código para manejar nuestro envío de archivos al servidor
Ahí estás listo. Ver más
fuente
Usar FormData es el camino a seguir, como lo indican muchas respuestas. Aquí hay un poco de código que funciona muy bien para este propósito. También estoy de acuerdo con el comentario de anidar bloques ajax para completar circunstancias complejas. Al incluir e.PreventDefault (); en mi experiencia hace que el código sea más compatible con varios navegadores.
fuente
Usar js puro es más fácil
Aquí hay un fragmento más desarrollado con manejo de errores y envío adicional de json
Mostrar fragmento de código
fuente
Sí, puede, solo use javascript para obtener el archivo, asegurándose de leer el archivo como una URL de datos. Analice las cosas antes de base64 para obtener los datos codificados de base 64 y luego, si está usando php o realmente cualquier lenguaje de fondo, puede decodificar los datos de base 64 y guardarlos en un archivo como se muestra a continuación
Por supuesto, es probable que desee hacer alguna validación, como verificar qué tipo de archivo está tratando y cosas así, pero esta es la idea.
fuente
fuente
Puede usar el método ajaxSubmit como sigue :) cuando selecciona un archivo que necesita cargarse en el servidor, envíe el formulario al servidor :)
fuente
Para cargar un archivo enviado por el usuario como parte del formulario utilizando jquery, siga el código siguiente:
Luego envíe el objeto de datos del formulario al servidor.
También podemos agregar un archivo o blob directamente al objeto FormData.
fuente
Si desea cargar un archivo usando AJAX, aquí hay un código que puede usar para cargar archivos.
Aquí está el HTML para cargar el archivo
fuente
Para obtener todas sus entradas de formulario, incluido el tipo = "archivo" , debe usar el objeto FormData . podrá ver el contenido de formData en el depurador -> red -> Encabezados después de enviar el formulario.
fuente
fuente
Aquí había una idea en la que estaba pensando:
Tenga una forma en la que mueva el elemento INPUT: File a.
El resultado se publicará en el marco, y luego puede enviar los datos recuperados un nivel a la etiqueta de imagen que desee con algo como:
y la página se carga.
Creo que funciona para mí, y dependiendo de que pueda hacer algo como:
fuente