Custom File Upload Button

Hello guys in this tutorial we will create custom file upload button using Html Css & javaScript

First we need to create two files index.html and style.css then we need to do code for it.

Step:1

Add below code inside index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Custom File Upload Field</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta https-equiv="X-UA-Compatible" content="ie=edge" />
    <link rel="stylesheet" href="style.css" />
    <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500&family=IBM+Plex+Serif:wght@300;400&display=swap" rel="stylesheet">
  </head>
  <body>
    <div class="form-outer">
      <form class="form">
        <input type="file" hidden="hidden" id="file" />
        <span id="custom-msg">No file chosen, yet.</span>
        <button type="button" id="upload-button">Select Your File</button>
      </form>
    </div>

    <script type="text/javascript">
      const fileBtn = document.getElementById("file");
      const customBtn = document.getElementById("upload-button");
      const customTxt = document.getElementById("custom-msg");

      customBtn.addEventListener("click", function(){
        fileBtn.click();
      });
      fileBtn.addEventListener("change",function(){
        if (fileBtn.value) {
          customTxt.innerHTML = fileBtn.value.match(
            /[\/\\]([\w\d\s\.\-\(\)]+)$/
          )[1]
        }else {
          customTxt.innerHTML = "No file chosen, yet.";
        }
      });
    </script>
  </body>
</html>

Step:2

Then we need to add code for style.css which code i provide in below screen.

* {
    padding: 0;
    margin: 0; 
    font-family: 'IBM Plex Sans', serif; 
}
body {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100vh;
    background: #f1f2f3;
}
#upload-button {
    padding: 10px;
    color: #fff;
    background: #2700ff;
    border: 2px solid #3f00ff;
    cursor: pointer;
    outline: 0;
}
form.form {
    padding: 5px;
    background: #fff;
    border: 2px solid #2700ff;
}

Output:

Leave a Comment