javascript 如何使用HTML文件上传的图像作为背景?

b4lqfgs4  于 2023-05-16  发布在  Java
关注(0)|答案(2)|浏览(147)

我尝试使用<input type="file">来允许用户上传将用作背景的图像。我不知道我是否需要得到文件的完整路径。
这是我尝试使用的输入:这是与输入background = selectBackground.value; document.body.style.background = "#4d3325 url('" + background + "')no-repeat center center fixed"; document.body.style.backgroundSize = "auto 100%";关联的JavaScript
背景没有任何变化,当我尝试将其显示为常规图像时,它只显示一个小图像图标。

vshtjzan

vshtjzan1#

使用URL.createObjectURL()

通过使用这个,上传的图像文件被转换为对象URL。
最后,当我们改变另一个图像时,我们应该通过使用URL.revokeObjectURL()从内存中删除旧的url,以便更好地管理内存。

function file(e){
               window.url && URL.revokeObjectURL(window.url);// release memory
               const f = e.target.files[0];
               let url = URL.createObjectURL(f);
               window.url = url;
               document.getElementsByClassName('container')[0].style.backgroundImage = `url(${url})`;
}
.container{
        width: 100px;
        height: 100px;
        border: 1px solid lightgrey;
        margin: 10px;
        background-size: contain;
        background-repeat: no-repeat;
}
<div class='container'></div>
 <input type='file' accept=".png, .jpg, .jpeg, .gif .bmp" onchange="file(event)">
gc0ot86w

gc0ot86w2#

你好,朋友,看看这个解决方案是否符合你的需求:

var input = document.getElementById('input');
input.addEventListener('change', readURL, true);

function readURL() {
  var file = document.getElementById("input").files[0];
  var reader = new FileReader();
  reader.onloadend = function() {
    var image = new Image();

    image.src = reader.result;

    image.onload = function() {
      document.getElementById("myDiv").style.backgroundImage = "url(" + reader.result + ")";
    }
  }
  if (file) {
    reader.readAsDataURL(file);
  }
}
<div id="myDiv" style="width:200px; height:200px">
  <input type="file" id="input" class="custom-file-input" accept=".png, .jpg, .jpeg, .gif .bmp" />
</div>

相关问题