宝哥软件园

在Koa.js中实现文件上传的接口功能

编辑:宝哥软件园 来源:互联网 时间:2021-08-19

文件上传是一个基本功能,几乎每个系统都有,比如上传图片,上传Excel等等。那么如何在Node Koa应用中实现一个支持文件上传的接口呢?本文从环境准备开始,最后用Postman和一个HTML页面进行测试。

01-环境准备

首先,当然需要通过安装Koa和koa-router来初始化一个Koa项目。

npm安装koa koa路由器

设置图像上传目录,将图像上传到指定目录,在app路径下新建一个公共文件夹。目录结构如下:

KOA-upload/-app-public-uploads-index . js-package . JSON Write index . js

const KOA=require(' KOA ')const app=new KOA()router . post('/upload ',CTX={ CTX . body=' KOA upload demo ' })app . use(router . routes());App.listen (3000,()={console.log('启动成功')console . log(' http://localhost 33603000 ')});然后开始,确保这一步没有问题。

02—使用koa-body中间件获取上传的文件

Koa-body支持文件、json和表单格式的请求体,并且安装了koa-body

npm安装KOA-车身

设置koaBody配置参数index.js

const KOA=require(' KOA ')const KOA body=require(' KOA-body ')const path=require(' path ')const app=new KOA()app . use(KOA body({//支持文件格式multipart:true和formidable : {//上传目录uploaddir : path . join(_ _ dirname,' public/uploads '),//保留文件扩展名keepExtensions: true,});

接下来,改进/上传路线,获取文件,然后直接返回文件路径

Router.post ('/upload ',CTX={ const file=CTX . request . files . file CTX . body={ path : file . path } }),所以我们实际上可以上传文件并将其上传到public/uploads。让我们用邮差测试一下。

打开Postman,输入http://localhost:3001/upload,选择POST方式,选择Body要传输的文件,选择表单-数据格式,然后在KEY中选择文件类型。

然后可以选择要上传的图片。上传成功后,可以看到上传文件夹下有一张图片,并输出图片的路径。

03—使用koa静态中间件生成图像链接

其实直接返回图片的局部路径是没有用的。我们应该返回一个http链接的图片地址,点击地址查看图片。

借助koa-static中间件,我们可以创建一个静态服务,它指定一个文件夹,文件夹中的所有文件都可以通过http服务访问。

Install: npm安装koa-static并在app上注册。我们在koaBody中间件前面注册它,并将public设置为静态文件目录。

const Koastatic=require(' Koa-static ').app . use(Koastatic(path . join(_ _ dirname,' public '))

启动程序,这样公共下的文件就可以通过HTTP服务打开了。我们可以打开之前上传的图片:http://localhost 33603001/uploads/upload _ 65c1d26E5A47870cf4011aad1243fce0.png,可以直接在浏览器中显示。

然后我们转换上传路由的实现,让它生成图片链接并返回给客户端

router.post('/upload ',CTX={ const file=CTX . request . files . file const base name=path . base name(file . path)CTX . body={ ' URL ' : ` $ { CTX . origin }/uploads/$ { base name } `})

Basename可以得到文件名和扩展名,ctx.origin可以得到服务器的域名,比如localhost:3001,但是我们不能把它写死。

用Postman再次测试,可以看到返回图片的URL。点击直接打开。

04-编译前端页面上传文件

之前,我们用Postman模拟上传文件进行测试。虽然我们写的后端界面可以高效测试,但是前端的一些同学可能通常对前端页面的测试方式比较熟悉,所以我们写一个表单页面进行测试。

公开创建一个新的upload.html文件作为测试页面。

formaction='/upload '方法=' post ' enctype=' multipart/form-data '输入类型=' file' name=' file '按钮类型=' submit' upload /button/form

这是一种传统的表单提交,这样的代码在我们的实际工作中可能并不常见。action是我们提交的接口,enctype='multipart/form-data '是指定上传文件的格式。输入的name属性必须等于file,因为我们接受的字段名是file。

然后我们用HTTP服务打开这个页面:http://localhost :3001/upload . html,因为我们整个公共目录已经是一个静态的HTTP服务目录,里面的所有文件都可以通过HTTP访问。

选择文件,点击上传,可以看到上传成功后返回文件地址。

摘要

以上是边肖介绍的Koa.js中上传文件的界面功能。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!如果你觉得这篇文章对你有帮助,请转载,请注明出处,谢谢!

更多资讯
游戏推荐
更多+