首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我试图写一个上传文件接口的node.js案列,结果得到了一个错误:?

我试图写一个上传文件接口的node.js案列,结果得到了一个错误:?

提问于 2023-08-03 18:06:35
回答 1关注 0查看 231

得到这个错误:

代码语言:js
AI代码解释
复制
TypeError [ERR_INVALID_ARG_TYPE]: The "data" argument must be of type string or an instance of Buffer, TypedArray, or DataView. Received undefined

这是我的html代码:

代码语言:js
AI代码解释
复制
<!DOCTYPE html>
<html>

<head>
    <title>文件上传</title>
</head>

<body>
    <input type="file" id="fileInput">
    <button onclick="uploadFile()">上传</button>
    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    <script>
        function uploadFile() {
            const fileInput = document.getElementById('fileInput');
            const file = fileInput.files[0]; 
            const formData = new FormData();
            formData.append('file', file); 
            axios.post('http://localhost:8801/upload', 
            formData, {
                headers: {
                    'Content-Type': 'multipart/form-data'
                }
            }).then(response => {
                    console.log(response.data);
                })
                .catch(error => {
                    console.error(error);
                });
        }
    </script>
</body>

</html>

下面是node.js代码:

代码语言:js
AI代码解释
复制
const cors = require("cors")
const express = require('express');
const multer = require('multer');
const path = require('path');
const fs = require('fs');
const { log } = require("console");
const app = express();
app.use(cors())
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('file'), (req, res) => {
  const file = req.file;
  //获取原始文件名
  const originFile = file.originalname;
  console.log(originFile);
  //将原始文件名进行分割获取文件名的后缀
  const fileExt = originFile.split(".")[1];
  console.log(fileExt)
  //拼接新的文件名 用时间戳的方式
  const newFileNmae = Date.now() + "." + fileExt;
  console.log(newFileNmae)
  const filePath = path.join(__dirname, 'uploads', newFileNmae);
  // 检查路径是否存在,如果不存在则创建路径
  const directory = path.dirname(filePath);
  if (!fs.existsSync(directory)) {
    fs.mkdirSync(directory, { recursive: true });
  }  // 将上传的文件写入指定路径
  fs.writeFile(filePath, file.buffer, (err) => {
    if (err) {
      console.error(err);
      res.status(500).send('文件上传失败');
    } else {
      res.send('文件上传成功');
    }
  });
});
app.listen(8801, () => {
  console.log('服务端已启动,监听端口 8801');
});

我使用的node.js版本:v18.17.0

用了cors express multer path fs等模块

相关文章
navicat连接MySQL失败,cmd也不能登录MySQL_远程连接mysql
出现 Client does not support authentication protocol requested by server…的解决方案
全栈程序员站长
2022/11/04
5.7K0
解决:Navicat远程连接mysql失败「建议收藏」
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
全栈程序员站长
2022/11/19
3K0
MySQL远程连接失败(错误码:2003)
1. 环境信息 服务器系统:Centos 7.6 服务器MySQL版本:8.0.25 本地系统:Windows10 本地客户端:navicat 15 2. 本地客户端连接远程服务器MySQL报错 3.
框架师
2021/08/05
17.7K2
mysql远程连接数据库 权限_sql远程连接数据库失败
我们在刚学习MySQL数据库时一般都是连接localhost然后登录root用户创建数据库进行操作,那么问题来了,如何通过其他主机来访问自己的数据库呢?
全栈程序员站长
2022/11/08
14K0
mysql远程连接数据库 权限_sql远程连接数据库失败
pycharm远程部署_远程连接服务器失败
File → Settings → Project:XXX →Python Interpreter
全栈程序员站长
2022/09/25
22.5K0
pycharm远程部署_远程连接服务器失败
SecureCRT远程连接Ubuntu失败解决案例
使用VirtualBox搭建一个Ubuntu14.04的系统环境,为了省去主机与虚拟机直接互相直接一直切换的频繁操作,所以想到了使用SecureCRT连接,但是出现了连接问题,问题如下图:
用户8705036
2021/06/08
2.2K0
MySQL开启远程连接
在Linux上面装完MySQL 或 MariaDB,远程登录报错 Host is not allowed to connect to this MySQL server,是因为没有开启远程登陆。解决方法如下:
摘繁华
2021/12/23
7.6K0
Navicat连接MySQL失败1251
错误提示:1251-Client does not support authentication protocol requested by server; consider upgrading MySQL client
全栈程序员站长
2022/11/04
6.7K0
MySQL 开启远程连接
update user set Host = '%' where Host = 'localhost' and User='root';
IT工作者
2022/01/05
7K0
mysql 允许远程连接
use mysql;进入mysql库 grant all privileges on \*.\* to root@'%'identified by 'ur passwd'; 设置允许远程连接
buiu
2021/10/18
6.5K0
mysql 开启远程连接
1.netstat -anpl | grep mysql 查看mysql的端口 如果没有请确定你的mysql已经成功安装好并运行 ps aux | grep mysql 查看mysql进程
用户5166330
2019/10/12
5.8K0
MySql如何远程连接
通过select*from mysql.user 查看用户及权限这个是可以查看权限的。。
斯文的程序
2019/11/07
7.2K0
mysql 开启远程连接
第一句中”%”表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某台机器可以访问,将其换成相应的IP即可,如:
上山打老虎了
2022/06/14
4.5K0
linux mysql 远程连接
±----------±-----±------------------------------------------+ | host | user | password | ±----------±-----±------------------------------------------+ | localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | | node01 | root | | | 127.0.0.1 | root | | | localhost | | | | node01 | | | ±----------±-----±------------------------------------------+
云缓缓知我意
2021/04/15
14.9K0
mysql 开启远程连接
第一句中”%”表示任何主机都可以远程登录到该服务器上访问。如果要限制只有某台机器可以访问,将其换成相应的IP即可,如:
子润先生
2021/06/28
6.5K0
MySQL开启远程连接
前言 学习MySQL重新整理以前非MK的记载 ---- 描述 没有开启的话连接数据库报错:2003-can't connect to MYSQL ---- 方法/步骤 第一步 远程连接上Linux系统,确保Linux系统已经安装上了MySQL数据库。登陆数据库。 mysql -u$user -p $pwd 第二步 创建用户用来远程连接 GRANT ALL PRIVILEGES ON *.* TO '$username'@'%' IDENTIFIED BY '$password' WITH G
AlicFeng
2018/06/08
7K0
mysql 开启 远程连接
安装好 mysql 后,一般会使用客户端连接(必须Navcat)。本文描述了怎么设置远程连接。
张云飞Vir
2020/03/16
7K0
Navicat 远程连接 MySQL
相信大家都有在远程服务器上进行开发吧,其中 MySQL 的使用率应该也会挺高,如果使用 Navicat 等可视化工具来操作远程数据库不失为一种很好的选择,避免了在命令行写 SQL 语句的操作。下面简单介绍一下 Navicat 连接远程数据库的操作。
希希里之海
2018/08/30
26.2K10
Navicat 远程连接 MySQL
解决:navicat for mysql连接失败[通俗易懂]
1、问题描述: 在navicat for mysql 连接mysql 8.0.23时,出现如下错误。
全栈程序员站长
2022/11/04
9.5K0
远程连接Mysql连接报错
这个问题是因为在数据库服务器中的mysql数据库中的user的表中没有权限(也可以说没有用户),下面将记录我遇到问题的过程及解决的方法。
半条命专刊
2020/09/14
5K0

相似问题

远程连接MYSQL失败,提示1045如何解决?

31.9K

远程连接失败咋办??

4628

mysql无法远程连接?

1532

云主机安装mysql,本地可以操作,远程访问失败,连接超时?

1311

求助,远程桌面连接失败?

098
相关问答用户
擅长3个领域
腾讯 | 技术专家擅长2个领域
腾讯云TDP | 高级后端开发工程师擅长3个领域
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档