Tengo un texto en un área de texto oculta. Cuando se hace clic en un botón, me gustaría que el texto se ofreciera para descargar como un .txt
archivo. ¿Es esto posible usando AngularJS o Javascript?
javascript
angularjs
nickponline
fuente
fuente
Respuestas:
Puedes hacer algo como esto usando
Blob
.en tu controlador:
para habilitar la URL:
Tenga en cuenta que
Fuente: MDN
fuente
$scope.url
no funcionó para mí. Tuve que usarwindow.location
en su lugar.download
atributo no es compatible con ninguna versión de IE o Safari, aunque caniuse.com/#feat=downloadSimplemente haga clic en el botón para descargar usando el siguiente código.
en html
En controlador
fuente
$http.get(...)
asegúrese de establecerresponseType:'arraybuffer'
como se explica aquí: stackoverflow.com/questions/21628378/…Prueba esto
y visite este sitio, podría ser útil para usted :)
http://docs.angularjs.org/guide/
fuente
download
atributo que aún no es compatible con ninguna versión de IE ni Safari. Compruébalo aquí: caniuse.com/#feat=downloadEsto se puede hacer en javascript sin la necesidad de abrir otra ventana del navegador.
Reemplace 'url' con el enlace a su archivo. Puede poner esto en una función y llamarlo con
ng-click
si necesita activar la descarga desde un botón.fuente
En nuestro proyecto actual en el trabajo, teníamos un iFrame invisible y tuve que alimentar la URL del archivo al iFrame para obtener un cuadro de diálogo de descarga. Al hacer clic en el botón, el controlador genera la URL dinámica y desencadena un evento $ scope donde
directive
se enumera una personalizada que escribí. La directiva agregará un iFrame al cuerpo si aún no existe y establece el atributo url en él.EDITAR: Agregar una directiva
Esta directiva responde a un evento de controlador llamado
downloadFile
entonces en tu controlador lo haces
fuente
Puede establecer
location.href
un URI de datos que contenga los datos que desea que el usuario descargue. Además de esto, no creo que haya ninguna forma de hacerlo solo con JavaScript.fuente
$location.href
cambiado a$window.location.href
Solo me gustaría agregar eso en caso de que no descargue el archivo debido a inseguro: blob: null ... cuando se desplaza sobre el botón de descarga, debe desinfectarlo. Por ejemplo,
fuente
Si tiene acceso a en el servidor, considere configurar los encabezados como se responde en esta pregunta más general .
Al leer los comentarios sobre esa respuesta, es recomendable utilizar un tipo de contenido más específico que el flujo de octetos.
fuente
Tuve el mismo problema y dediqué muchas horas a buscar diferentes soluciones, y ahora me uno a todos los comentarios de esta publicación, espero que sea de ayuda, mi respuesta fue probada correctamente en Internet Explorer 11, Chrome y FireFox.
HTML:
DIRECTIVA:
EN CONTROLADOR:
EN SERVICIO:
BACKEND (en PRIMAVERA):
fuente
Esto funcionó para mí en angular:
fuente
data:text/plain;base64,${btoa(theStringGoesHere)}
No quería URL estática. Tengo AjaxFactory para hacer todas las operaciones de Ajax. Recibo la URL de fábrica y la estoy vinculando de la siguiente manera.
Gracias @AhlemMustapha
fuente