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

node 文件上传操作(前端 form表单上传 formData上传 后端 node 使用express+multer)

目录

  • 前端
    • form表单上传
    • formData上传
  • 后端 node 使用express+multer

前端

form表单上传

 <h1>个人信息</h1><form action="http://localhost:3000/api/sendFile" method="post" enctype="multipart/form-data"><label for="name">姓名:</label><input type="text" name="name" id="name"><br><br><label for="email">电子邮件地址:</label><input type="email" name="email" id="email"><br><br><label for="avatar">头像:</label><input type="file" name="avatar" id="avatar" multiple><br><br><label for="pic">喜欢:</label><input type="file" name="pic" id="pic" multiple><br><br><input type="button" value="保存" id="save"></form> 

formData上传

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><h1>个人信息</h1><!-- <form action="http://localhost:3000/api/sendFile" method="post" enctype="multipart/form-data"> --><label for="name">姓名:</label><input type="text" name="name" id="name"><br><br><label for="email">电子邮件地址:</label><input type="email" name="email" id="email"><br><br><label for="avatar">头像:</label><input type="file" name="avatar" id="avatar" multiple><br><br><label for="pic">喜欢:</label><input type="file" name="pic" id="pic" multiple><br><br><input type="button" value="保存" id="save"><!-- </form> --><script>var username = document.getElementById("name")var email = document.getElementById("email")var avatar = document.getElementById("avatar")var pic = document.getElementById("pic")var save = document.getElementById("save")save.onclick = function () {var formdata = new FormData()formdata.append("name", username.value)console.log(username,username.value);formdata.append("email", email.value)for (let i = 0; i < avatar.files.length; i++) {formdata.append("avatar", avatar.files[i])}console.log(formdata);for (let i = 0; i < pic.files.length; i++) {formdata.append("pic", pic.files[i])}console.log(formdata.getAll("name"))console.log(formdata.getAll("email"))console.log(formdata.getAll("avatar"))console.log(formdata.getAll("pic"))let ajax = new XMLHttpRequest()ajax.open("POST", 'http://localhost:3000/api/sendFile')ajax.send(formdata)ajax.onreadystatechange = function () {if (ajax.status == 200) {console.log(ajax.responseText);}}}</script>
</body></html>

后端 node 使用express+multer

const express = require('express')
const fs = require('fs')
const app = express()
const port = 3000
const multer = require('multer')
//使用中间件
// app.use(express.static(`${__dirname}/web`))
let storage= multer.diskStorage({destination:function(req,file,cb){cb(null,`${__dirname}/uploadfiles`)},filename:function(req,file,cb){cb(null,file.originalname)}
})
let upload =multer({storage:storage})
app.get('/', (req, res) => {//返回一个首页fs.readFile(`${__dirname}/web/sendFile.html`,(err,data)=>{if (err) throw errres.append('Content-Type', 'text/html')res.send(data)})
})// 搭建文件上传的服务
//单文件 upload.single("avatar")
//多文件 upload.single("avatar")
//多个上传upload.fields([{name:"avatar",maxCount:20},{name:"pic",maxCount:20}])
//没有文件上传upload.none()
app.post('/api/sendFile', upload.fields([{name:"avatar",maxCount:20},
{name:"pic",maxCount:20}
]),(req, res) => {//返回一个首页console.log(req.body);console.log(req.file);console.log(req.files);res.send("ok")
})app.listen(port, () => console.log(`Example app listening on port ${port}!`))
http://www.lryc.cn/news/229257.html

相关文章:

  • 容器数据卷+MYSQL实战
  • 开发者测试2023省赛--UnrolledLinkedList测试用例
  • HoudahGeo 6 for Mac:掌控地理位置信息的强大工具
  • Xilinx Artix7-100T低端FPGA解码MIPI视频,基于MIPI CSI-2 RX Subsystem架构实现,提供工程源码和技术支持
  • C与汇编深入分析
  • MySQL中外键的使用及外键约束策略
  • Home Assistant使用ios主题更换背景
  • 深入了解鼠标光标的设置过程
  • 数据结构-散列表
  • 一款IT团队都在用的私有化知识库,技术开放,还开源了!
  • 解决 docker compose 官方 MySQL 镜像在容器中不能输入中文的问题
  • 基于连续Hopfield神经网络优化——旅行商问题优化计算
  • SpringBoot整合Activiti7——定时器事件(九)
  • 轻量封装WebGPU渲染系统示例<29>- 深度模糊DepthBlur(源码)
  • LeetCode226. Invert Binary Tree
  • Java设计模式-创建型模式-建造者模式
  • PyQt中QFrame窗口中的组件不显示的原因
  • git 命令行回退版本
  • IntelliJ IDEA 安装 GitHub Copilot插件 (最新)
  • viewpage选择器
  • vue中如何将json数组指定的key赋值给el-form-item并均匀的分成2列
  • 笔记本分屏怎么操作?3个方法提高工作效率!
  • Android 使用poi生成Excel ,word并保存在指定路径内
  • 嵌入式杂记 -- MCU的大小端模式
  • 对这套BI零售数据分析方案心动,是零售人天性
  • vuekeyclock 集成
  • ARM Linux 基础学习 / 配置交叉编译工具链 / 编译 Linux 应用和驱动 / 编译内核
  • 通讯协议学习之路(实践部分):SPI开发实践
  • 【系统安装】ubuntu20.04启动盘制作,正经教程,小白安装教程,百分百成功安装
  • 2023云计算发展趋势