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

如何在Nuxt 3 Server API中实现文件上传?

如何在Nuxt 3 API路由中获取上传的文件

当前你的代码使用readBody方法只能解析JSON或urlencoded格式的请求体,而文件上传采用的是multipart/form-data格式,因此无法正确获取到上传的文件。你需要改用h3提供的readMultipartFormData方法来处理文件上传请求,修改后的代码如下:

import { readMultipartFormData } from 'h3'

export default defineEventHandler(async (event) => {
  // 解析multipart格式的表单数据
  const formData = await readMultipartFormData(event)

  if (!formData) {
    return { status: 'error', message: '未接收到表单数据' }
  }

  // 根据前端上传的字段名查找文件(这里假设字段名为avatar)
  const fileItem = formData.find(item => item.name === 'avatar')

  if (!fileItem) {
    return { status: 'error', message: '未找到上传的文件' }
  }

  // 提取文件相关信息
  const fileInfo = {
    filename: fileItem.filename,
    contentType: fileItem.type,
    size: fileItem.data.length,
    // fileItem.data 是文件的二进制Buffer,可用于保存到服务器或云存储
  }

  return { status: 'success', data: fileInfo }
})

关键说明

  • readMultipartFormData会将请求体解析为表单项数组,每个项包含name(字段名)、filename(文件名)、type(文件MIME类型)、data(文件二进制Buffer)
  • 需要根据前端实际使用的文件上传字段名替换代码中的avatar
  • 如果需要将文件保存到服务器,可以使用Node.js的fs模块将fileItem.data写入到指定路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 13:05:19