The W3C validator says: "Attribute size not allowed on element input at this point."
<input type="file" name="foo" size="40" />
What is the correct way to specify the width of a file input in HTML5?
The W3C validator says: "Attribute size not allowed on element input at this point."
<input type="file" name="foo" size="40" />
What is the correct way to specify the width of a file input in HTML5?
In the input field use the style attribute, this allow you to use css.
<input type="file" name="foo" style="width: 40px" />
Or with separate css:
input[name="foo"] {
width: 40px;
}
In your css file, specify the width as such:
input[type=file] { width: 300px; border: 2px solid red; }
As recommended in the other answers, the width
of the entire file input, i.e. button and filename text, can be set using CSS as follows:
input[type="file"] {
/* functional */
width: 100%;
/* cosmetic */
background-color: steelblue;
}
<input type="file">
(This also works in Firefox nowadays.)
However, this does not change the width of the file select button. This may cause problems such as clipping, as illustrated in the following snippet.
input[type="file"] {
width: 40px;
}
<input type="file">
To modify the file select button width (and/or other button styling), you can use the ::file-selector-button pseudo element. For example:
input[type="file"] {
width: 40px;
}
input:last-of-type::file-selector-button {
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
}
/* cosmetic */
body {
display: flex;
flex-direction: column;
gap: 8px;
}
<input type="file">
<input type="file">
You need to put the 'input' inside a div:
<div style="width: 40%">
<input class="d-flex justify-content-end align-items-center" style="background-color: yellow; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%" type="file" id="file"/>
</div>
<form class="upload-form">
<input class="upload-file" data-max-size="2048" type="file" >
<input type=submit>
</form>
<script>
$(function(){
var fileInput = $('.upload-file');
var maxSize = fileInput.data('max-size');
$('.upload-form').submit(function(e){
if(fileInput.get(0).files.length){
var fileSize = fileInput.get(0).files[0].size; // in bytes
if(fileSize>maxSize){
alert('file size is more then' + maxSize + ' bytes');
return false;
}else{
alert('file size is correct- '+fileSize+' bytes');
}
}else{
alert('choose file, please');
return false;
}
});
});
</script>