I'm using a label tag for file input:
<label for="file" style="cursor: pointer">
<img src="plus.png"><span id="file-text">Select a file</span>
</label>
Once the user selects a file, I want the text of the label to change to the file name of the selected file, but not the path.
<input type="file" id="file" style="display: none" onchange="document.getElementById('file-text').innerHTML = this.value"/>
Google Chrome is returning
C:\fakepath\filename.jpg
Microsoft Edge is returning the entire correct path of the file on the local file system.
I tried the split function:
onchange="var path = this.value.split('\'); document.getElementById('file-text').innerHTML = 'path[path.length-1]'"
But now it is not returning anything. The text doesn't change anymore. Would it be possible to accomplish this in inline script or I'd have to use a separate function?
The GetFileName method returns a string that contains the file name or folder name for the last component in a specified path.
var fullPath = $('#fileUpload1'). val();
Use IE with file protocol if you want to get the real path. Possible duplicate of How to get full path of selected file on change of <input type='file'> using javascript, jquery-ajax?
You can access the filename from the files
attribute of the <input type="file"/>
(it is a FileList
containing all added files). files[0]
will give you the first file as a File
object. file.name
will get you the filename.
var input = document.getElementById('file');
var label = document.getElementById('file-text');
input.addEventListener('change', function() {
if(input.files.length > 0)
label.textContent = input.files[0].name;
else
label.textContent = 'Select a file';
});
<label for="file" style="cursor: pointer">
<img src="plus.png"><span id="file-text">Select a file</span>
</label>
<input type="file" id="file" style="display: none"/>
Inline version:
<label for="file" style="cursor: pointer">
<img src="plus.png"><span id="file-text">Select a file</span>
</label>
<input type="file" id="file"
onchange="document.getElementById('file-text').textContent = this.files.length > 0 ? this.files[0].name : 'Select a file'"
style="display: none" />
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With