You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将HTML端上传的文件变量传递到Node.js中读取使用

实现步骤

1. 前端index.html调整

你原有代码缺少表单提交/异步上传的逻辑,无法将本地文件传递到后端,以下提供两种实现方案:

方案A:原生表单提交(页面会刷新)

<form action="/upload" method="POST" enctype="multipart/form-data">
  <input type="file" id="myFile" name="filename">
  <input type="submit" value="上传文件">
</form>

方案B:异步上传(页面无刷新)

<input type="file" id="myFile" name="filename">
<button id="uploadBtn">上传文件</button>
<script>
document.getElementById('uploadBtn').addEventListener('click', async () => {
  const fileInput = document.getElementById('myFile')
  if (!fileInput.files[0]) {
    alert('请先选择需要上传的文件')
    return
  }
  const formData = new FormData()
  formData.append('filename', fileInput.files[0])
  await fetch('/upload', {
    method: 'POST',
    body: formData
  })
})
</script>

2. 后端app.js调整

你原有代码仅引入了fs模块,缺少HTTP服务能力和文件上传解析逻辑,需要配合express(轻量服务框架)和multer(文件上传解析中间件)实现,完整代码如下:

const express = require('express')
const multer = require('multer')
const fs = require('fs')
const app = express()
const PORT = 3000

// 配置multer将上传的文件暂存到内存,无需落地磁盘即可读取内容
const storage = multer.memoryStorage()
const upload = multer({ storage: storage })

// 配置静态资源服务,可直接访问放在public目录下的index.html
app.use(express.static('public'))

// 处理文件上传请求的接口
app.post('/upload', upload.single('filename'), (req, res) => {
  // 直接从内存中读取文件内容,转utf8编码
  const fileContent = req.file.buffer.toString('utf8')
  console.log('上传的文件内容:\n', fileContent)

  // 如果你需要先把文件保存到服务端磁盘再读取,替换为以下代码即可
  // const savePath = `./${req.file.originalname}`
  // fs.writeFileSync(savePath, req.file.buffer)
  // const readMe = fs.readFileSync(savePath, 'utf8')
  // console.log(readMe)

  res.send('文件读取完成')
})

app.listen(PORT, () => {
  console.log(`服务已启动,访问地址:http://localhost:${PORT}`)
})

3. 启动运行步骤

  • 项目根目录下新建public文件夹,把修改完成的index.html放入该文件夹
  • 根目录执行npm init -y初始化Node.js项目
  • 执行npm install express multer安装所需依赖
  • 执行node app.js启动服务,浏览器打开http://localhost:3000即可测试上传功能

内容的提问来源于stack exchange,提问作者user16974637

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 08:15:03