@rxstack/express-file-upload
v0.2.0
Published
RxStack ExpressFileUpload Module
Downloads
4
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.