Express

Express:NodeJS最有名的框架(老牌)

Koa/Koa2:更简洁(新秀)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nVqkMrLm-1632793446546)(C:\Users\lenovo\Desktop\Express脚手架.png)]

set DEBUG=express:* & npm start

post:req.body.XXX

get:req.query.XXX

页面刷新:location.reload();

注:回退操作页面刷新不起作用

ajax请求不能用来链接

文件提交

// js部分
router.post('/user/add', function (req, res, next) {
  req.files.forEach(f => {
    let max = 9999;
    let min = 1000;
    // 拼接一个新的文件名:毫秒数+随机数+后缀名
    let t = Date.now();
    let n = parseInt(Math.random() * (max - min) + min);
    let z = path.extname(f.originalname);// 获取文件的后缀名
    let name = '' + t + n + z;
    // 2.读取原始文件
    let data = fs.readFileSync(f.path)
    // 3.将文件写入指定的文件夹
    fs.writeFile(path.resolve(__dirname, '../public/images', name), data, function (err) {
      if (err) {
        console.log('错误:' + err);
      }
      // 将用户输入的数据引入数组
      start.unshift({
        userName: req.body.username,
        photo: name,
      });
      console.log(start);
    })
  })
  res.send('success')
})
    <!-- 方式一 -->    
<form action="/users/user/add" method="POST" enctype="multipart/form-data">
      <input
        type="text"
        placeholder="请输入添加学员的姓名"
        id="username"
        name="username"
      />
      <br />
      <input type="file" id="userFile" name="userFile" multiple /> <br />
      <button id="btn">提交</button>
    </form>
    <!-- 方式二:使用Ajax异步请求实现文件上传 -->
    <input
      type="text"
      placeholder="请输入添加学员的姓名"
      id="username"
      name="username"
    />
    <br />
    <input type="file" id="userFile" name="userFile" multiple /> <br />

    <!-- 进度条 -->
    <div class="progress">
      <div
        class="progress-bar"
        role="progressbar"
        aria-valuenow="60"
        aria-valuemin="0"
        aria-valuemax="100"
        style="width: 0%"
      >
        <span class="sr-only">0%</span>
      </div>
    </div>
    <br />
    <button id="btn">提交</button>
  </body>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.9.1/jquery.js"></script>
  <script>
    $("#btn").click(function () {
      let username = $("#username").val();
      let userFile = document.getElementById("userFile");
      var formData = new FormData();
      formData.append("username", username);
      formData.append("userFile", userFile.files[0]);
      $.ajax({
        url: "/users/user/add",
        method: "POST",
        data: formData,
        processData: false, // 不要去处理文件数据内容
        contentType: false, // 告诉jQuery不要去设置Content-Type请求头内容
        success: function (res) {
          console.log(res);
          location.href = "/users";
        },
        xhr: function () {
          let xhr = $.ajaxSettings.xhr();
          if (xhr.upload) {
            // 上传进度查看
            xhr.upload.addEventListener("progress", function (e) {
              var percent = parseInt((e.loaded / e.total) * 100);
              $(".progress-bar").css("width", `${percent}%`);
              $(".sr-only").html(`${percent}%`);
            });
          }
          return xhr;
        },
      });
    });
  </script>

删除

// 方式一    
$("table").on("click", "button", function () {
      var id = $(this).parent().prev().find("img").attr("src");
      $.post("/users/user/del", { id }, function (tar) {
        location.reload();
        $("table").empty();
        lalal();
      });
      // console.log(id);
    });


// js中
// 删除操作
router.post('/user/del', function (req, res, next) {

  let del = path.basename(req.body.id);
  start.forEach((item, index) => {
    if (item.photo == del) {
      fs.unlinkSync(path.resolve('public/images', del))
      start.splice(index, 1)
    }
  })
  res.send(start)
  console.log(start);
})
// 方式二
    $("table").on("click", "button", function () {
      // 取出要删除的对象的图片地址
      var id = $(this).parent().prev().find("img").attr("src");
      let a = id.split("/")[2];
      console.log(a);
      // RestFul风格:语义化、参数拼接到URL中,斜杠隔开
      $.ajax({
        url: "/users/del/"+a,
        method: "DELETE",
        success: function (res) {
          // console.log(res);
          if (res == 'success') {
            location.reload();
            $("table").empty();
            lalal();
          }
        },
      });
    });


// 删除操作,方法二
// :photo作为一个变量它对应的就是前端传递的图片名称
router.delete('/del/:photo', function (req, res, next) {
  // 通过req.params.photo取到图片的路径
  console.log(req.params.photo);
  let del = req.params.photo;  // 获得带后缀的图片名
  console.log(del);
  start.forEach((item, index) => {
    if (item.photo == del) {
      start.splice(index, 1)
      fs.unlinkSync(path.resolve('public/images', del))
    }
  })
  res.send('success')
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值