关于node编写文件上传的接口的坑及解决

 更新时间:2022年06月06日 17:12:39   作者:小码家  
这篇文章主要介绍了关于node编写文件上传的接口的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

node编写文件上传接口的坑

今天没事在写node的接口时候用到文件上传的接口给前端,不知道用中间件好一点,然后就找度娘,网上都是koa-body中间件,但是那个自己测试老是接收不到传过来的文件file的值,然后换另一种就是koa-multer 完美解决。

首先是在这里插入代码片npm i koa-multer

在app.js引入,进行路由

控制器代码:

路由代码

然后就完美解决

node(express)图片上传接口写法

作为一名接口调用师,今天我们来用node写一个图片上传的接口。。。

需要

node-express框架

const multer = require('multer');
const fs = require('fs')
const path = require('path')

需要的三个模块,一个是文件上传的接口一个是文件读取的模块,一个是路径设置的模块。

步骤和代码

完整代码

const multer = require('multer');
const fs = require('fs')
const path = require('path')
module.exports = (app) => {
    let upload = multer({ dest: 'uploads/' })
    app.post('/img', upload.single('test'),             function(req, res, next) {
        //读取文件路径(uploads/文件夹下面的新建的图片地址)
        console.log(req.file);
        fs.readFile(req.file.path, (err, data) => {
            //如果读取失败
            if (err) { return res.send('上传失败') }
            //如果读取成功
            //声明图片名字为时间戳和随机数拼接成的,尽量确保唯一性
            let time = Date.now() + parseInt(Math.random() * 999) + parseInt(Math.random() * 2222);
            //拓展名
            let extname = req.file.mimetype.split('/')[1]
                //拼接成图片名
            let keepname = time + '.' + extname
                //三个参数
                //1.图片的绝对路径
                //2.写入的内容
                //3.回调函数
            fs.writeFile(path.join(__basename, '/public/img/' + keepname), data, (err) => {
                if (err) { return res.send('写入失败') }
                res.send({ err: 0, msg: '上传ok', data: '/public/img/' + keepname })
            });
        });
    });
}

代码分解

fs.readFile(req.file.path, (err, data)=>{
    if(err){res.send('读取失败')}
})
//一个是读取部分一个是写入部分,主要就这两部分。
fs.writeFile(path.join(__basename, '/public/img/' + keepname), data, (err) => {
                if (err) { return res.send('写入失败') }

如果有和我一样在学习的入门小伙伴,希望你知道在自己的入口文件里面在中间件写完后使用这两段代码,懂得都懂

//head
let express =require('express')
let router =require('/your router path')
const app =express()
...
//main
router(app)
//other
    app.use((req, res) => {
    res.status(404).send('没有找到资源')
})
app.listen(8080)

大概这个意思了。以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Node.js插件给指定目录下的所有图片添加上文字水印

    使用Node.js插件给指定目录下的所有图片添加上文字水印

    加水印是为了保护图片的版权和安全,在互联网上,很容易将图片下载或者截屏保存下来,然后进行二次使用,这就侵犯了原作者的版权,此外,水印也可以帮助识别图片的来源和所有者,因此本文给大家介绍了如何使用Node.js插件给指定目录下的所有图片添加上文字水印
    2023-12-12
  • node.js中的url.resolve方法使用说明

    node.js中的url.resolve方法使用说明

    这篇文章主要介绍了node.js中的url.resolve方法使用说明,本文介绍了url.resolve的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • node中的Express框架详解

    node中的Express框架详解

    这篇文章主要介绍了node中的Express框架,框架是为了规范开发流程,降低开发难度,提高开发效率而制定的一套共人们使用的功能模块或者是编程的约定,需要的朋友可以参考下
    2023-04-04
  • Nodejs进阶:express+session实现简易登录身份认证

    Nodejs进阶:express+session实现简易登录身份认证

    本篇文章主要介绍了Nodejs进阶:express+session实现简易身份认证示例,非常具有实用价值,需要的朋友可以参考下
    2017-04-04
  • 解析Node.js异常处理中domain模块的使用方法

    解析Node.js异常处理中domain模块的使用方法

    这篇文章主要介绍了Node.js异常处理中domain模块的使用方法,文中最后提到了内存泄漏的相关问题,值得注意,需要的朋友可以参考下
    2016-02-02
  • 使用NVM实现不同nodejs版本的自由切换

    使用NVM实现不同nodejs版本的自由切换

    在工作中,我们可能需要同时进行多个不同NodeJS版本的项目开发,这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,NVM就是为解决这个问题而产生的,本文给出了下载、安装及使用方法,需要的朋友可以参考下
    2024-02-02
  • Nginx 配置多站点vhost 的方法

    Nginx 配置多站点vhost 的方法

    这篇文章主要介绍了Nginx 配置多站点vhost 的方法,需要的朋友可以参考下
    2018-01-01
  • 浅析node.js的模块加载机制

    浅析node.js的模块加载机制

    这篇文章主要介绍了浅析node.js的模块加载机制,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • nodejs使用readline逐行读取和写入文件的实现

    nodejs使用readline逐行读取和写入文件的实现

    这篇文章给大家介绍了nodejs使用readline逐行读取和写入文件的实现方法,文中通过代码示例给大家讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01
  • nodejs操作mongodb的增删改查功能实例

    nodejs操作mongodb的增删改查功能实例

    这篇文章主要介绍了nodejs操作mongodb的增删改查功能,简单分析了mongodb模块的安装并结合实例形式分析了nodejs操作mongodb数据库进行增删改查的相关实现技巧,需要的朋友可以参考下
    2017-11-11

最新评论