-
-
Notifications
You must be signed in to change notification settings - Fork 781
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Configurable file storage locations (#886)
* feat: Make logfile location customizable It may be desirable to log to a more standard location (e.g. in /var/log/), or in some cases to turn logging to file off. To support these, use a custom config property to determine the location of the output log file, and default to the previous location if it is unset. * feat: Support alternate storage locations for uploaded files This involves a couple primary changes: 1) to make Sails' temporary file-upload directory a configurable location by using a common file-upload-receiving helper; 2) to create custom static routes for the file-upload locations, so they can be outside the application's public directory; and 3) to use the file-uploading handler everywhere that receives files, so config for the helper is applied to all file uploads consistently. This is sufficient to allow the application directory to be deployed read- only, with writable storage used for file uploads. The new config property for Sails' temporary upload directory, combined with the existing settings for user-avatar and background-image locations are sufficient to handle uploads; the new custom routes handle serving those files from external locations. The default behavior of the application should be unchanged, with files uploaded to, and served from, the public directory if the relevant config properties aren't set to other values.
- Loading branch information
1 parent
1217969
commit 368ead9
Showing
11 changed files
with
151 additions
and
43 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,6 +6,8 @@ SECRET_KEY=notsecretkey | |
|
||
## Optional | ||
|
||
# LOG_FILE= | ||
|
||
# TRUST_PROXY=0 | ||
# TOKEN_EXPIRES_IN=365 # In days | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
const util = require('util'); | ||
const { v4: uuid } = require('uuid'); | ||
|
||
async function doUpload(paramName, req, options) { | ||
const uploadOptions = { | ||
...options, | ||
dirname: options.dirname || sails.config.custom.fileUploadTmpDir, | ||
}; | ||
const upload = util.promisify((opts, callback) => { | ||
return req.file(paramName).upload(opts, (error, files) => callback(error, files)); | ||
}); | ||
return upload(uploadOptions); | ||
} | ||
|
||
module.exports = { | ||
friendlyName: 'Receive uploaded file from request', | ||
description: | ||
"Store a file uploaded from a MIME-multipart request part. The request part name must be 'file'; the resulting file will have a unique UUID-based name with the same extension.", | ||
inputs: { | ||
paramName: { | ||
type: 'string', | ||
required: true, | ||
description: 'The MIME multi-part parameter containing the file to receive.', | ||
}, | ||
req: { | ||
type: 'ref', | ||
required: true, | ||
description: 'The request to receive the file from.', | ||
}, | ||
}, | ||
|
||
fn: async function modFn(inputs, exits) { | ||
exits.success( | ||
await doUpload(inputs.paramName, inputs.req, { | ||
saveAs: uuid(), | ||
dirname: sails.config.custom.fileUploadTmpDir, | ||
maxBytes: null, | ||
}), | ||
); | ||
}, | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters