0.1.4 • Published 9 years ago
node-post-server v0.1.4
Node-post-server
本模块需要配合 node-post 使用
npm i node-post-server --saveExporess 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