| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- function arrayRemove (arr, item) {
- var idx = arr.indexOf(item)
- if (~idx) arr.splice(idx, 1)
- }
- function FileAppender (strategy, req) {
- this.strategy = strategy
- this.req = req
- switch (strategy) {
- case 'NONE': break
- case 'VALUE': break
- case 'ARRAY': req.files = []; break
- case 'OBJECT': req.files = Object.create(null); break
- default: throw new Error('Unknown file strategy: ' + strategy)
- }
- }
- FileAppender.prototype.insertPlaceholder = function (file) {
- var placeholder = {
- fieldname: file.fieldname
- }
- switch (this.strategy) {
- case 'NONE': break
- case 'VALUE': break
- case 'ARRAY': this.req.files.push(placeholder); break
- case 'OBJECT':
- if (this.req.files[file.fieldname]) {
- this.req.files[file.fieldname].push(placeholder)
- } else {
- this.req.files[file.fieldname] = [placeholder]
- }
- break
- }
- return placeholder
- }
- FileAppender.prototype.removePlaceholder = function (placeholder) {
- switch (this.strategy) {
- case 'NONE': break
- case 'VALUE': break
- case 'ARRAY': arrayRemove(this.req.files, placeholder); break
- case 'OBJECT':
- if (this.req.files[placeholder.fieldname].length === 1) {
- delete this.req.files[placeholder.fieldname]
- } else {
- arrayRemove(this.req.files[placeholder.fieldname], placeholder)
- }
- break
- }
- }
- FileAppender.prototype.replacePlaceholder = function (placeholder, file) {
- if (this.strategy === 'VALUE') {
- this.req.file = file
- return
- }
- delete placeholder.fieldname
- Object.assign(placeholder, file)
- }
- module.exports = FileAppender
|