当前位置: 首页 > article >正文

原生js上传图片

无样式上传图片

创建一个 FormData 对象:这个对象可以用于存储数据。

将文件添加到 FormData 对象:通过 append() 方法,将用户选择的文件添加到 formData 对象中。

使用 fetch 发送请求:使用 fetch API 或者其他方法将 FormData 对象发送到服务器。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>图片上传</title>
  </head>
  <body>
    <!-- 文件上传 -->
    <input type="file" id="fileInput" onchange="uploadImage()" />
    <script>
      // 上传图片的函数
      function uploadImage() {
        // 获取文件输入框元素
        const fileInput = document.getElementById("fileInput");
        // 创建formData对象,用于存储要上传的文件数据
        const formData = new FormData();
        formData.append("file", fileInput.files[0]); // 将选中的文件添加到formData对象中

        // 请求接口
        fetch("http://yikatong.kuxia.top/pc/common/upload", {
          method: "POST",
          body: formData, // 请求体是formData对象,其中包含文件数据
        })
          .then((response) => response.json()) // 服务器响应成功后,解析JSON格式的响应数据
          .then((data) => {
            console.log("上传成功:", data);
          })
          .catch((error) => {
            console.error("上传失败:", error);
          });
      }
    </script>
  </body>
</html>

有样式的上传图片

 就是把图片回显的地方盖着输入框

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>图片上传</title>
  </head>
  <style>
    * {
      padding: 0;
      margin: 0;
    }
    .box {
      display: flex;
    }
    /* 添加虚线边框 */
    #image {
      width: 100px;
      height: 100px;
      border-radius: 5px;
      margin-left: -100px;
    }
  </style>
  <body>
    <div class="box">
      <!-- 文件上传 -->
      <input
        type="file"
        id="fileInput"
        onchange="uploadImage()"
        style="height: 100px; width: 100px; opacity: 0"
      />
      <!-- 用于回显图片 -->
      <img id="image" src="/img/add.svg" />
    </div>
    <script>
      const fileInput = document.getElementById("fileInput"); // 获取上传文件框
      const image = document.getElementById("image"); // 获取回显图片框
      function uploadImage() {
        const formData = new FormData(); // 创建formData对象,用于存储要上传的文件数据
        formData.append("file", fileInput.files[0]); // 将选中的文件添加到formData对象中

        // 请求接口
        fetch("http://yikatong.kuxia.top/pc/common/upload", {
          method: "POST",
          body: formData, // 请求体是formData对象,其中包含文件数据
        })
          .then((response) => response.json()) // 服务器响应成功后,解析JSON格式的响应数据
          .then((data) => {
            console.log("上传成功:", data.data.url);
            // 回显图片
            image.src = "http://yikatong.kuxia.top" + data.data.url;
          })
          .catch((error) => {
            console.error("上传失败:", error);
          });
      }
    </script>
  </body>
</html>


http://www.kler.cn/a/415391.html

相关文章:

  • VUE3中defineExpose的使用方法
  • linux安装部署mysql资料
  • NLP信息抽取大总结:三大任务(带Prompt模板)
  • SpringBoot 集成MQTT实现消息订阅
  • 未来已来?AI技术革新改变我们的生活
  • 深入浅出剖析典型文生图产品Midjourney
  • Spring 返回JSON
  • Rust个人认为将抢占C和C++市场,逐渐成为主流的开发语言
  • Hackathon靶机系列Hackathon2
  • 求助:selenium.common.exceptions.SessionNotCreatedException: x x x
  • 【小白学机器学习41】如何从正态分布的总体中去抽样? 获得指定正态分布的样本的2种方法
  • 存储结构及关系(一)
  • 计算机的错误计算(一百六十九)
  • 力扣700:二叉搜索树中的搜索
  • UICollectionView在xcode16编译闪退问题
  • 如何查看ubuntu服务器的ssh服务是否可用
  • 【浏览器】缓存与存储
  • Java WEB:从起源到现代的传奇之旅
  • Java项目中加缓存
  • 新合作!Babylon Labs、Lombard 和 Cubist 将可编程 BTC 引入Sui
  • Jenkins-基于 JNLP协议的 Java Web 启动代理
  • Python图像处理——Python转换h264格式视频
  • 链表?->?(以尾插法说明,附头插法)
  • 如何通过智能生成PPT,让演示文稿更高效、更精彩?
  • 游戏引擎学习第24天
  • MacOS 配置github密钥