Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
May 26, 2022 09:10 am GMT

How to create a file downloader via url using pure javascript

Hello friends, today in this blog you will learn how to create a file downloader via URL using pure Javascript. In our previous blog, we saw how to create drag & drop or sortable lists using HTML, CSS, and Sortable JS. Earlier, I shared many projects related to javascript, you can check if you want, and don't forget to check HTML, CSS, and Javascript projects.

This tool (File Downloader via URL) can download any file like image, video, pdf, SVG, etc. Users have to paste a valid URL of the file and click the download button to download the file. Remember, the file should be publicly accessible to download.

At first, I got the user entered file URL, and using fetch() API, I fetched the file. Once I got a response, I return the response as a blob() and in another then method, I got an object that contains details of the file.

You may like these:

Then, using URL.createObjectURL() method, I created a URL of that file object. This URL is stored in the document window. At last, I created a <a> tag and stored the URL as the href value of this tag, and click it so the file download. Watch the above video for a detailed explanation of each JavaScript line.

Note: If you get a cors (cross-origin resource sharing) error in the console during file downloading, that means the browser blocked the request because the requested site doesnt allow you to access that file.

This file downloader is made with pure JavaScript no server-side language is used to create it. If you liked it and want to create So you can check the source code or preview.

The Preview is available .

HTML Code

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Download Any File By URL Using Javascript - InCoder</title>    <link rel="stylesheet" href="main.css">    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css"></head><body>    <div class="container">        <div class="title">File Downloader via URL</div>        <p>Paste url of any image, video or PDF to Download. This tool is made with pure Javascript</p>        <form id="fileDownloader">            <div class="formInput">                <i class="fa-solid fa-link"></i>                <input type="text" id="fileURL" placeholder="Paste the URL" oninvalid="this.setCustomValidity('Enter a valid URL')" required />            </div>            <button type="submit">Download</button>        </form>    </div>    <script src="script.js"></script></body></html>

CSS Code

/* ------------------------ Created By InCoder ------------------------ */@import url("https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap");* {  margin: 0;  padding: 0;  box-sizing: border-box;  font-family: "Poppins", sans-serif;}body {  height: 100vh;  display: flex;  align-items: center;  justify-content: center;  background-color: #015d52;}.container {  padding: 0.5rem;  border-radius: 0.5rem;  background-color: #fff;  width: clamp(18rem, 45vw, 25rem);}.container .title {  font-weight: 600;  color: #202020;  text-align: center;  font-size: clamp(1rem, 4vw, 1.6rem);}.container p {  font-size: 0.9rem;}.container button[type="submit"] {  border: 0;  width: 100%;  opacity: 0.9;  color: #fff;  height: 2.5rem;  cursor: pointer;  font-size: 1rem;  margin-top: 0.8rem;  border-radius: 0.3rem;  background-color: #015d52;  transition: opacity 0.2s ease-in-out;}.container button[type="submit"]:hover {  opacity: 1;}.formInput input {    border: 0;    width: 100%;    height: 100%;    margin-left: .3rem;}.formInput input::placeholder {    color: #4e4e4ed4;}.formInput {  margin-top: .8rem;  width: 100%;  display: flex;  height: 2.5rem;  padding: .2rem;  color: #4e4e4ed4;  align-items: center;  border-radius: .3rem;  border: 2px solid #4e4e4ed4;}.formInput input:focus {    outline: none;}

Javascript Code

let form = document.querySelector('#fileDownloader')downloadBtn = form.querySelector('button')form.addEventListener('submit', e => {    e.preventDefault()    let inputURL = e.target.querySelector('#fileURL').value.trim()    downloadBtn.innerText = 'Downloading File Please Wait....'    downloadBtn.setAttribute('disabled', 'disabled')    getFile(inputURL)})const getFile = (url) => {    fetch(url).then(response => response.blob()).then(file => {        let tempLink = URL.createObjectURL(file)        let anchorTag = document.createElement('a')        anchorTag.href = tempLink        anchorTag.download = url.replace(/^.*[\\\/]/, '')        document.body.appendChild(anchorTag)        anchorTag.click()        downloadBtn.innerText = 'Download File'        downloadBtn.removeAttribute('disabled', 'disabled')        URL.revokeObjectURL(tempLink);        anchorTag.remove();    }).catch(() => {        alert("Unable to download file!");        downloadBtn.innerText = "Download File";        downloadBtn.removeAttribute('disabled', 'disabled')    })} 

Original Link: https://dev.to/incoderweb/how-to-create-a-file-downloader-via-url-using-pure-javascript-obp

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To