¿Cómo activar la descarga de un archivo al hacer clic en un botón HTML o JavaScript?

Para activar la descarga de un archivo al hacer clic en un botón, utilizaremos una función personalizada o un atributo de descarga de HTML 5.
Enfoque 1: uso del atributo de 
descarga El atributo de descarga simplemente usa una etiqueta de anclaje para preparar la ubicación del archivo que debe descargarse. El nombre del archivo se puede configurar usando el nombre del valor del atributo; si no se proporciona, se usará el nombre del archivo original.
Sintaxis 
 

<a download="filename">

filename: el atributo especifica el nombre del archivo que se descargará.
Ejemplo: 
 

html

<!DOCTYPE html>
<html>
   <body>
      <style>
         p {
         color: green;
         }
      </style>
      <p>How to trigger a file download when 
         clicking an HTML button or JavaScript?
      <p>
         <!-- GFG is the name of the 
            file to be downloaded-->
         <!-- In order to run the code, 
            the location of the file 
            "geeksforgeeks.png" needs to 
            be changed to your local directory,
            both the HTML and downloadable file 
            needs to be present in the same directory -->
         <a href="geeksforgeeks.png" download="GFG">
         <button type="button">Download</button>
         </a>
   </body>
</html>

Producción: 
 

Enfoque 2: usar una función javascript personalizada 
 

  • primero hizo un área de texto donde se emitirá toda la entrada de texto.
  • haga una etiqueta de anclaje usando la propiedad createElement y luego asignándole el atributo de descarga y href.
  • encodeURIComponent codificará todo con un significado especial, por lo que lo usará para componentes de URI. 
    Por ejemplo, si tenemos un texto como “Hola: ¿Geek?”, hay caracteres especiales en este, por lo que encodeURIComponent los codificará y los agregará para su uso posterior.
  • datos:texto/simple; charset=utf-8 es el valor del atributo de href (como href=” “), especifica que el valor debe ser de tipo texto y con codificación tipo UTF-8. El método click() simula un clic del mouse en un elemento.
  • Después de eso, simplemente llamamos a nuestra función de descarga con el texto de textarea y nuestro nombre de archivo «GFG.txt» como parámetros en el botón de entrada con id ‘btn’.

Ejemplo: 
 

html

<!DOCTYPE html>
<html>
   <body>
      <style>
         p {
         color: green;
         }
      </style>
      <p>
          How to trigger a file download when
          clicking an HTML button or JavaScript?
      <p>
         <textarea id="text">
             Welcome to GeeksforGeeks
         </textarea>
         <br/>
         <input type="button" id="btn" 
                value="Download" />
         <script>
            function download(file, text) {
              
                //creating an invisible element
                var element = document.createElement('a');
                element.setAttribute('href', 
                'data:text/plain;charset=utf-8, '
                + encodeURIComponent(text));
                element.setAttribute('download', file);
              
                // Above code is equivalent to
                // <a href="path of file" download="file name">
              
                document.body.appendChild(element);
              
                //onClick property
                element.click();
              
                document.body.removeChild(element);
            }
              
            // Start file download.
            document.getElementById("btn")
            .addEventListener("click", function() {
                // Generate download of hello.txt 
                // file with some content
                var text = document.getElementById("text").value;
                var filename = "GFG.txt";
              
                download(filename, text);
            }, false);
         </script>
   </body>
</html>

Producción: 
 

Enfoque 3: usar una función javascript personalizada con Axios Library
En este ejemplo, descargaremos imágenes y archivos usando Axios. Esto requiere un poco de conocimiento intermedio de JavaScript para funcionar y en este ejemplo se usará una biblioteca Axios .
 

html

<!DOCTYPE html>
<!DOCTYPE html>
<html>
   <head>
      <title>Download Images using Axios</title>
      <style> 
         .scroll { 
         height: 1000px; 
         background-color: white; 
         } 
      </style>
   </head>
   <body>
      <p id="dest">
      <h1 style="color: green"> 
         GeeksforGeeks 
      </h1>
      </p> 
      <button onclick="download()">
          Download Image
      </button>
      <p class="scroll"> 
         By clicking the download button 
         will generate a random image.
      </p>
   </body>
   <script src=
"https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.min.js">
   </script>
   <script> 
      function download(){
          axios({
              url:'https://source.unsplash.com/random/500x500',
              method:'GET',
              responseType: 'blob'
      })
      .then((response) => {
             const url = window.URL
             .createObjectURL(new Blob([response.data]));
                    const link = document.createElement('a');
                    link.href = url;
                    link.setAttribute('download', 'image.jpg');
                    document.body.appendChild(link);
                    link.click();
      })
      }
        
   </script>
</html>
</html>

Producción:

JavaScript es mejor conocido por el desarrollo de páginas web, pero también se usa en una variedad de entornos que no son de navegador. Puede aprender JavaScript desde cero siguiendo este tutorial de JavaScript y ejemplos de JavaScript .

Publicación traducida automáticamente

Artículo escrito por Abhishek7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *