关于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入门笔记 之async模块

    Node.js入门笔记 之async模块

    这篇文章主要介绍了Node.js入门笔记 之async模块,async是一个异步处理模块,主要有三个方式:串行无关联、并行无关联 、串行有关联,文章围绕主题展开更多的相关内容,需要的小伙伴可以参考一下
    2022-06-06
  • 了不起的node.js读书笔记之mongodb数据库交互

    了不起的node.js读书笔记之mongodb数据库交互

    这篇文章主要介绍了了不起的node.js读书笔记之mongodb数据库交互,需要的朋友可以参考下
    2014-12-12
  • 使用nodejs + koa + typescript 集成和自动重启的问题

    使用nodejs + koa + typescript 集成和自动重启的问题

    这篇文章主要介绍了nodejs + koa + typescript 集成和自动重启,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • nodejs 实现简单的文件上传功能(示例详解)

    nodejs 实现简单的文件上传功能(示例详解)

    这篇文章主要介绍了nodejs 实现简单的文件上传功能,文件上传方式分为三种,本文通过实例代码给大家详细介绍,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Node.js API详解之 vm模块用法实例分析

    Node.js API详解之 vm模块用法实例分析

    这篇文章主要介绍了Node.js API详解之 vm模块用法,结合实例形式分析了Node.js API中vm模块基本功能、函数、使用方法及相关操作注意事项,需要的朋友可以参考下
    2020-05-05
  • node.js中express中间件body-parser的介绍与用法详解

    node.js中express中间件body-parser的介绍与用法详解

    这篇文章主要给大家介绍了关于node.js中express中间件body-parser的相关资料,文章通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • 在Node.js应用中使用Redis的方法简介

    在Node.js应用中使用Redis的方法简介

    这篇文章主要介绍了在Node.js应用中使用Redis的方法,最简单的数据读写操作相关,需要的朋友可以参考下
    2015-06-06
  • 使用Make构建Node.js网站项目

    使用Make构建Node.js网站项目

    这篇文章介绍了使用Make构建Node.js网站项目的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • 简单谈谈node.js 版本控制 nvm和 n

    简单谈谈node.js 版本控制 nvm和 n

    大量开发者的贡献使Node版本的迭代速度很快,版本很多(横跨0.6到0.11),所以升级Node版本就成为了一个问题。目前有n和nvm这两个工具可以对Node进行无痛升级,本文简单介绍一下二者的使用。
    2015-10-10
  • 详解Node.js读写中文内容文件操作

    详解Node.js读写中文内容文件操作

    在本篇文章中我们给大家分享了关于Node.js读写中文内容文件操作的相关知识点内容,有需要的朋友们可以学习下。
    2018-10-10

最新评论