0.2.0 • Published 7 years ago
@rxstack/express-file-upload v0.2.0
RxStack ExpressFileUpload Module
The ExpressFileUpload module allows you to upload files using
expressjsin rxstack framework. Under the hood it usesformidableandmime
Installation
npm install @rxstack/express-file-upload --save
// peerDependencies
npm install @rxstack/async-event-dispatcher@^0.2 @rxstack/core@^0.2 @rxstack/exceptions@^0.2 @rxstack/express-server@^0.2 Documentation
Setup
ExpressFileUpload module needs to be registered in the application.
The module depends on @rxstack/express-server,
make sure it is installed and configured.
Let's create the application:
import {Application, ApplicationOptions} from '@rxstack/core';
import {ExpressFileUploadModule} from '@rxstack/express-file-upload';
export const APP_OPTIONS: ApplicationOptions = {
imports: [
// ...
ExpressFileUploadModule.configure({
enabled: true, // default is false
hash: 'md5', // default is md5
multiples: false, // default is false
directory: './uploads' // default is os.tmpdir()
}),
],
servers: ['express'],
providers: [
// ...
],
logger: {
// ....
}
};
new Application(APP_OPTIONS).start();Module options
The module accepts the following options:
enabled: whether the module is enabled or not. The default isfalsehash: If you want checksums calculated for incoming files, set this to eithersha1ormd5. The default ismd5multiples: If this option is enabled, the files argument will contain arrays of files for inputs which submit multiple files using the HTML5 multiple attribute. The default isfalsedirectory: Sets the directory for placing file uploads in. You can move them later on usingfs.rename(). The default isos.tmpdir().
Controller usage
Uploaded file is available in the Request object and it is instance of File
import {Request, Response, Http} from '@rxstack/core';
export class FileUploadController {
@Http('POST', '/files/upload', 'file_upload')
async uploadAction(request: Request): Promise<Response> {
// you can validate it by checking the file.size and file.type
const file = request.files.get('file');
return new Response(file);
}
}Here is an curl example:
curl -F 'file=@/path_to_file/hello.txt' http://localhost:3000/files/uploadLicense
Licensed under the MIT license.