【Node.js】制作简易图床应用

图床服务(picture hosting service,不是 “picture bed” 吼),是web服务中常见常用的服务。其功能在于允许用户将图片放在服务器上并提供公开可访问的链接。

有了上一节(【Node.js】使用Multer的文件上传下载)的铺垫,这一节就来小试牛刀,制作一个简易的仅支持上传和浏览的图床应用了

需求分析

首先,提供上传图片的接口。在上传图片后,需要返回给用户图片的url以便于用户的访问。

简单起见,我们约定,所有图片都存放在项目根目录下的imgs文件夹中,url中格式为/img/图片名前缀的请求即表示获取相应图片

对于上传文件,设计两个接口:

  1. 上传单张图片,随机生成名称,返回url路径(/upload/singleImage)
  2. 同一上传多张图片,最多不超过9张,随机名称,返回成功存储图片信息列表,包含其url路径(/upload/multiImages)

对所有的图片要求:

  • 大小不能超过20K( 20 × 1024 = 20480 20 \times 1024=20480 20×1024=20480字节)
  • 格式必须为以下几种之一,不区分大小写:
    – jpg
    – jpeg
    – gif
    – png
    – webp
    – bmp
  • 转存结束后要删除缓存

浏览

在实现上传功能之前,有必要先将浏览图片的功能配置好,以便于测试使用。

var express = require('express')
var app = express()

//路由为/img的请求映射到./imgs文件夹下的静态文件
app.use('/img',express.static('./imgs'))

上传

完整代码如下:


var express = require('express')
var multer = require('multer')
var fs = require('fs')

var app = express()
var upload = multer({
   //设置文件缓存地址
    dest:'./temp'
})

/* 全局常量 */
const HOST = 'localhost'            //服务器地址
const PORT = 8080                   //端口号
const SUFFIXES = {
                     //合法后缀
    png:true,
    jpg:true,
    jpeg:true,
    bmp:true,
    webp:true,
    gif:true
}
const MAX_SIZE = 20480              //文件大小上限
const IMAGE_URL = 'img'             //图片url前缀
const IMAGE_DIRECTORY = './imgs'    //本地保存图片路径

app.use('/img',express.static('./imgs'))    //配置静态资源

/* 工具方法 */

//校验后缀
function checkSuffix(suffix){
   
    return SUFFIXES[suffix]
}

//校验文件大小
function checkSize(size){
   
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值