Context Menu - Insert Image

HTML

<img src="" alt="">
<input type="file" onchange="previewFile(event)" class="custom-file-input">

CSS

/*Context-Menu*/

#context-menu {
    width: 200px;
    border-radius: 5px;
    padding: 0;
    position: relative;
    visibility: hidden;
}

#context-menu ul {
    list-style-type: none;
    margin: 0;
    line-height: 50px;
    padding: 0;
    text-align: center;
}

#context-menu > ul > li {
    cursor: pointer;
}

#context-menu > ul > li:nth-child(n < 3) {
    border-bottom: 1px dotted;
}

#context-menu > ul > li:hover {
    background-color: #D5D8DE;
}


/*Input File*/

.custom-file-input {
    color: transparent;
}

.custom-file-input::-webkit-file-upload-button {
    visibility: hidden;
}

.custom-file-input::before {
    content: 'Inserir Imagem';
    color: black;
    display: inline-block;
    background: #fff;
    border: 1px solid #999;
    border-radius: 3px;
    padding: 5px 8px;
    outline: none;
    white-space: nowrap;
    -webkit-user-select: none;
    cursor: pointer;
    font-weight: 300;
    font-size: 10pt;
}

.custom-file-input:hover::before {
    background-color: #D5D8DE;
}

.custom-file-input:active {
    outline: 0;
}

.custom-file-input:focus {
    outline: none !important;
}

.custom-file-input:active::before {
    background-color: #fff;
}

.div-text {
    width: 500px;
    height: 500px;
    border: 1px solid #000;
}

JavaScript

function previewFile() {
    var preview = document.querySelector('img');
    var file = document.querySelector('input[type=file]').files[0];
    var caminhoVirtual = URL.createObjectURL(file);
    preview.src = caminhoVirtual;
}