达拉~ 2022-07-20 17:59 采纳率: 64.7%
浏览 243
已结题

img标签的src属性使用base64上传图片后刷新网页src显示问题

背景:使用input的file指定上传图片,然后把他作为 img 的 src 属性,显示没有问题,但是如果刷新网页的话就img的src属性就会显示未知
百度后得知可能是浏览器不会缓存的缘故,那换成背景图可以吗?他这里的这个未知是什么意思呢?


```html
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <input type="file" id="up" accept="image/*">
    <!-- <input type="file" name="pic" id="up" accept="image/*"> -->
    <img src="" width="200px" id="img" height="200px" alt="">
</body>
<script src="./source//jQuery/jquery.3.5.1.min.js"></script>
<script>
    let up = document.querySelector('#up')
    let img = document.querySelector('#img')
    up.onchange = function () {
        let fileDate = this.files[0]
        let pettern = /^image/
        if (!pettern.test(fileDate.type)) {
            alert('图片格式不正确')
            return
        }
        let reader = new FileReader()
        reader.readAsDataURL(fileDate)//及将图片转化为 base64位
        reader.onload = function (e) {
            console.log(e)
            console.log(this.result)//需要的数据
            // jq设置 src属性
            $('#img').attr('src', this.result)
        }
    }
</script>

</html>

  • 写回答

3条回答 默认 最新

  • Heerey525 前端领域新星创作者 2022-07-20 20:56
    关注

    使用localStorage本地存储可以实现

    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
      </head>
    
      <body>
        <input type="file" id="up" accept="image/*" />
        <!-- <input type="file" name="pic" id="up" accept="image/*"> -->
        <img src="" width="200px" id="img" height="200px" alt="" />
      </body>
      <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
      <script>
        window.onload = function () {
          // 刷新进入,查询localStorage中存在key为imgSrcBase64Temp
          const imgSrcBase64Temp = window.localStorage.getItem("imgSrcBase64Temp");
          // 将imgSrcBase64Temp赋值给img的src,实现保存上次上传的图片
          if (imgSrcBase64Temp) $("#img").attr("src", imgSrcBase64Temp);
        };
        let up = document.querySelector("#up");
        let img = document.querySelector("#img");
        up.onchange = function () {
          let fileDate = this.files[0];
          let pettern = /^image/;
          if (!pettern.test(fileDate.type)) {
            alert("图片格式不正确");
            return;
          }
          let reader = new FileReader();
          reader.readAsDataURL(fileDate); //及将图片转化为 base64位
          reader.onload = function (e) {
            console.log(e);
            console.log(this.result); //需要的数据
            window.localStorage.setItem("imgSrcBase64Temp", this.result); // 存在localStorage中key为imgSrcBase64Temp
            // jq设置 src属性
            $("#img").attr("src", this.result);
          };
        };
      </script>
    </html>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月29日
  • 已采纳回答 7月21日
  • 修改了问题 7月20日
  • 创建了问题 7月20日

悬赏问题

  • ¥15 office打开卡退(新电脑重装office系统后)
  • ¥300 FLUENT 火箭发动机燃烧EDC仿真
  • ¥15 【Hadoop 问题】Hadoop编译所遇问题hadoop-common: make failed with error code 2
  • ¥15 vb6.0+webbrowser无法加载某个网页求解
  • ¥15 RPA财务机器人采购付款流程
  • ¥15 计算机图形多边形及三次样条曲线绘制
  • ¥15 根据protues画的图用keil写程序
  • ¥200 如何使用postGis实现最短领规划?
  • ¥15 pyinstaller打包错误
  • ¥20 cesm的气溶胶排放文件