Tengo el siguiente código para permitir a los usuarios descargar cadenas de datos en el archivo csv.
exportData = 'data:text/csv;charset=utf-8,';
exportData += 'some csv strings';
encodedUri = encodeURI(exportData);
newWindow = window.open(encodedUri);
Funciona bien que si el cliente ejecuta el código, genera una página en blanco y comienza a descargar los datos en un archivo csv.
Así que intenté hacer esto con un objeto JSON como
exportData = 'data:text/json;charset=utf-8,';
exportData += escape(JSON.stringify(jsonObject));
encodedUri = encodeURI(exportData);
newWindow = window.open(encodedUri);
Pero solo veo una página con los datos JSON mostrados, no la descargo.
Investigué un poco y este dice que funciona, pero no veo ninguna diferencia en mi código.
¿Me falta algo en mi código?
Gracias por leer mi pregunta:)
fuente
var storageObj = []; for (var i=0; i<1000000; ++i) storageObj.push('aaa');
muestra "Error de descarga - Error de red" en Chrome 61JSON.stringify(exportObj, null, 2)
en su lugarEncontré una respuesta.
Parece funcionar bien para mi.
** Todo el crédito va a @ cowboy-ben-alman, quien es el autor del código anterior **
fuente
Esta sería una versión pura de JS (adaptada de cowboy):
http://jsfiddle.net/sz76c083/1
fuente
Puedes intentar usar:
saveAs()
No es necesario tratar con ningún elemento HTML.
Si desea imprimir bastante el JSON, según esta respuesta , puede usar:
fuente
Lo siguiente funcionó para mí:
y luego llamarlo así
fuente
initMouseEvent()
es un estándar web obsoleto y ya no debe usarse. En su lugar, use lanew MouseEvent()
interfaz. Sin embargo, es solo un refactor menor.Recientemente tuve que crear un botón que descargaría un archivo json de todos los valores de una forma grande. Necesitaba esto para trabajar con IE / Edge / Chrome. Esto es lo que hice:
Hubo un problema con el nombre de archivo y la extensión en Edge, pero al momento de escribir esto parecía ser un error con Edge que se debe solucionar.
Espero que esto ayude a alguien
fuente
document.body.appendChild(a); a.style.display = 'none';
para que funcione en Firefox.Solución simple y limpia para aquellos que solo se dirigen a los navegadores modernos:
fuente
La
download
propiedad de los enlaces es nueva y no es compatible con Internet Explorer (consulte la tabla de compatibilidad aquí ). Para una solución de navegador cruzado a este problema, echaría un vistazo a FileSaver.jsfuente
Reaccionar : agrega esto donde quieras en tu método de renderizado.
• Objeto en estado :
• Objeto en accesorios :
className y style son opcionales, modifique el estilo según sus necesidades.
fuente
Intente configurar otro tipo MIME:
exportData = 'data:application/octet-stream;charset=utf-8,';
Pero puede haber problemas con el nombre del archivo en el cuadro de diálogo Guardar.
fuente
data = "data:application/octet-stream;charset=utf-8," + encodeURIComponent(JSON.stringify(data)); window.open(data);
simplemente descarga el archivo como "descargar" pero los datos que encadené y luego codifiqué con uri son como deberían ser.Si prefiere el fragmento de consola, el raser, que el nombre de archivo, puede hacer esto:
fuente