egg-multipart
Version:
multipart plugin for egg
53 lines (48 loc) • 2.61 kB
JavaScript
;
const os = require('os');
const path = require('path');
module.exports = appInfo => {
const config = {};
/**
* multipart parser options
* @member Config#multipart
* @property {String} mode - which mode to handle multipart request, default is `stream`, the hard way.
* If set mode to `file`, it's the easy way to handle multipart request and save it to local files.
* If you don't know the Node.js Stream work, maybe you should use the `file` mode to get started.
* @property {String | RegExp | Function | Array} fileModeMatch - special url to use file mode when global `mode` is `stream`.
* @property {Boolean} autoFields - Auto set fields to parts, default is `false`. Only work on `stream` mode.
* If set true,all fields will be auto handle and can acces by `parts.fields`
* @property {String} defaultCharset - Default charset encoding, don't change it before you real know about it
* @property {String} defaultParamCharset - For multipart forms, the default character set to use for values of part header parameters (e.g. filename) that are not extended parameters (that contain an explicit charset), don't change it before you real know about it
* @property {Integer} fieldNameSize - Max field name size (in bytes), default is `100`
* @property {String|Integer} fieldSize - Max field value size (in bytes), default is `100kb`
* @property {Integer} fields - Max number of non-file fields, default is `10`
* @property {String|Integer} fileSize - Max file size (in bytes), default is `10mb`, means should <10mb not <=10mb.
* @property {Integer} files - Max number of file fields, default is `10`
* @property {Array|Function} whitelist - The white ext file names, default is `null`
* @property {Array} fileExtensions - Add more ext file names to the `whitelist`, default is `[]`, only valid when `whitelist` is `null`
* @property {String} tmpdir - The directory for temporary files. Only work on `file` mode.
*/
config.multipart = {
mode: 'stream',
autoFields: false,
defaultCharset: 'utf8',
defaultParamCharset: 'utf8',
fieldNameSize: 100,
fieldSize: '100kb',
fields: 10,
fileSize: '10mb',
files: 10,
fileExtensions: [],
whitelist: null,
allowArrayField: false,
tmpdir: path.join(os.tmpdir(), 'egg-multipart-tmp', appInfo.name),
cleanSchedule: {
// run tmpdir clean job on every day 04:30 am
// cron style see https://github.com/eggjs/egg-schedule#cron-style-scheduling
cron: '0 30 4 * * *',
disable: false,
},
};
return config;
};