0

in this input field, it will only accept video files. if I try to upload any other files, by enabling all files option. it will show a alert. that's working fine but after adding any other format file, when it checking that it is not a video file, it showing the alert but file name is remaining in the input field.

I want to clear the input field file name and e.target.files as clear. this is my code...

<Label for="exampleFile">Upload Video</Label>
      <MyInput
        type="file"
        name="file"
        accept="video/*"
        id="exampleFile"
        label="Upload a Video"
        onChange={(e) => {
          let files = e.target.files;

          let file = files[0];
          let name = files[0].name;
          let type = files[0].type;

          if (!file.type.match("video.*")) {
            alert("You Can't upload a video file ");
          } else {
            // some code
          }
        }}
      />

enter image description here

when I am uploading any other format, it showing the alert, After clicking the OK button.it is showing....

enter image description here

the file name is still in the input field. I have to reset it.

I have tried with...

  1. document.getElementById('exampleFile').value = null
  2. useRef()
  3. added a value property with useState() but nothing is working.

can anyone help me to solve this issue...

3
  • Why are you using MyInput instead of a simple input tag? You may experience problems using another component instead of a simple HTML input when trying to use the same methods on it. Commented Nov 4, 2021 at 10:04
  • it is a custom component only, Commented Nov 4, 2021 at 10:26
  • I guess the id exampleFile is not working on the input field which is what you want, but it is only a property on your custom component. What's the error message? Commented Nov 4, 2021 at 10:29

1 Answer 1

2

Try setting a key attribute to the file input, then when you needed to reset it update the key attribute value:

  resetsFileInput() {
      let randomString = Math.random().toString(36);
     setInputKey(randomString)
     
    }

       <Label for="exampleFile">Upload Video</Label>
       <MyInput
        type="file"
        key={InputKey || '' } />
        name="file"
        accept="video/*"
        id="exampleFile"
        label="Upload a Video"
        onChange={(e) => {
          let files = e.target.files;

          let file = files[0];
          let name = files[0].name;
          let type = files[0].type;

          if (!file.type.match("video.*")) {
            alert("You Can't upload a video file ");
          } else {
              resetsFileInput()

            // some code
          }
        }}
      />
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.