0.1.4 • Published 8 years ago

node-post-server v0.1.4

Weekly downloads
3
License
MIT
Repository
github
Last release
8 years ago

Node-post-server

本模块需要配合 node-post 使用

npm i node-post-server --save

Exporess router

var path = require('path');
var express = require('express');
var router = express.Router();
var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
var Poster = require('node-post-server');
var poster = new Poster;

// 允许写入的路径
poster.config.merge({
    safePaths: [
        '/Users/gavinning/Desktop/test',
        '/Users/gavinning/Desktop/test1'
    ]
})

// Upload api
router.post('/upload', multipartMiddleware, (req, res) => {
    var user, source, target;

    user = auth(req);

    if(!checkuser(user)){
        return res.status(403).send('Permission denied')
    }

    // 上传文件的临时路径
    source = req.files[req.body.field].path;
    // 最终目标路径
    target = path.normalize(req.body.filepath);

    // 自动校检安全路径
    poster.dest(source, target, (err) => {
        err ?
            res.status(403).send(err.message):
            res.status(200).send(target)
    })
})

req.files

req.files = {
    files: {
        fieldName: 'files',
        originalFilename: '1.png',
        path: '/var/folders/wv/f11wc52113lfnqrnp0pEv8_m0000gn/T/lFs43x3i0saqM2FEriU5VS7v.png',
        headers: { 'content-disposition': 'form-data; name="files"; filename="1.png"',
        'content-type': 'image/png' },
        size: 67092,
        name: '1.png',
        type: 'image/png'
    }
}

API

post.safePath(src)
@des 判断目标是否为安全路径 @param type: String src 文件URL
@return type: Boolean 是否为安全路径

post.link(source, target, fn)
@des 建立硬链接,建立成功后根据post.config.get('deleteTmp')判断是否删除source
@param type: String source 源地址
@param type: String target 目标地址
@param type: Function fn 成功后回调,可选,有此参数为异步操作,无此参数为同步操作,推荐异步

post.copy 复制,其他同上

post.dest post输出文件的方法,默认为复制操作,其他同上

Options

配置项依赖 vpm-config 进行管理,点击了解api详情

post.config.init(options)

safePaths Array 配置安全路径
deleteTmp Boolean 是否删除临时文件,默认为 true