@rxstack/express-file-upload
v0.2.0
Published
RxStack ExpressFileUpload Module
Downloads
20
Readme
RxStack ExpressFileUpload Module
The ExpressFileUpload module allows you to upload files using
expressjs
in rxstack framework. Under the hood it usesformidable
andmime
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 isfalse
hash
: If you want checksums calculated for incoming files, set this to eithersha1
ormd5
. The default ismd5
multiples
: 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 isfalse
directory
: 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/upload
License
Licensed under the MIT license.