Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Styling the input type="file". How do I display the file path?

I have been trying to style an input type="file" field. My button is styled but I can't seem to figure out how to get the filepath/file to show when the user selects the file to upload. Can anyone out there help?

<form action="" method="POST" enctype="multipart/form-data">
    <div class="fileupload-buttonbar">
        <label class="file-upload"><span>Upload....</span><input name="uploadfile" type="file"> </label>    
    </div>
</form>

The CSS...

.file-upload {
    overflow: hidden;
    display: inline-block;
    position: relative;    
    vertical-align: middle;
    text-align: center;
    color: #fff;
    border: 2px solid #707070;
    background: #A0A0A0;
    -moz-border-radius: 8px;
    -webkit-border-radius: 8px;
    border-radius: 8px;
    text-shadow: #000 1px 1px 4px;
    cursor:pointer;
}
.file-upload:hover {
    background: #2FA2FF;
}
.file-upload.focus {
    outline: 2px solid yellow;
}
.file-upload input {
    position: absolute;
    top: 0;
    left: 0;
    margin: 0;
    font-size: 12px;
    opacity: 0;
    filter: alpha(opacity=0);
    z-index:-1;
}
.file-upload span {
    position: absolute;
    top: 0;
    left: 0;
    display: inline-block;
    padding-top: .45em;
}
.file-upload { height: 38px; }
.file-upload,
.file-upload span { width: 160px; }    
.file-upload-status {
    margin-left: 10px;
    vertical-align: middle;
    padding: 7px 11px;
    font-weight: bold;    
    font-size: 16px;
    color: #888;
    background: #f8f8f8;
    border: 3px solid #ddd;
}

My code is here http://jsfiddle.net/hjNEC/

like image 648
AttikAttak Avatar asked Dec 28 '12 20:12

AttikAttak


2 Answers

Add a change event to the input field, and then just get it's .value.

Example (using jQuery):

$('input[name="uploadfile"]').change(function(){
    var fileName = $(this).val();
    alert(fileName);
});

DEMO: http://jsfiddle.net/hjNEC/2/

EDIT: Since the input field is hidden, and the file name is part of that, you're gonna have to display fileName on the page yourself.

like image 83
Rocket Hazmat Avatar answered Oct 25 '22 12:10

Rocket Hazmat


<form action="" method="POST" enctype="multipart/form-data">
     <div class="fileupload-buttonbar">
          <input type="file" name="uploadfile" id="uploadfile" style="display:none" onchange="file_path_display.innerHTML=uploadfile.value"/>
          <span class="file-upload" onclick="uploadfile.click()" ondragdrop="uploadfile.dragdrop()">Upload....</span>
          <div id="file_path_display"></div>
     </div>
</form>
like image 36
Donald Duck Avatar answered Oct 25 '22 13:10

Donald Duck