
Security News
Crates.io Users Targeted by Phishing Emails
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
@openfin/multer-s3
Advanced tools
A tool for uploading files to S3 using the express multer module.
We provide a way to alter the data while it is being uploaded. We also have better hooks
Optional are keys with a ?
next to the name. We suggest adding a key, but hey, do you. Otherwise, multer will create a random name for you but will put it in the root of your bucket(as long as you have full access to that bucket).
Some of the properties are promises so you can do things asynchronously. IE, if you want to have a call to get a key name from somewhere else, that is fine. If you accidentally have a promise that never resolves, the file will never be uploaded.
For more info on these properties, check the aws documentation: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html
s3?: AWS.S3; bucket: string | PromisedFn; acl?: string | PromisedFn; key?: PromisedFn; serverSideEncryptionKMSKeyId?: string | PromisedFn; serverSideEncryption?: string | PromisedFn; storageClass?: string | PromisedFn; cacheControl?: string | PromisedFn; contentDisposition?: string | PromisedFn; metadata?: { [key: string]: any } | PromisedFn<{ [key: string]: any }>; contentType?: PromisedFn; serverSideEncryptionCustomerKey?: | string | Buffer | PromisedFn<string | Buffer>; serverSideEncryptionCustomerKeyMD5?: string | PromisedFn; serverSideEncryptionCustomerAlgorithm?: string | PromisedFn; onUpload?: (req: express.Request, storage: S3Storage, file: S3File) => any; streamTransformers?: TransformFuncs[]; detectContentType?: boolean;
An example of how to use the library.
// Create class to get checksum as it is uploaded
class Chunker extends Stream.Transform {
public checksum: crypto.Hash;
public file: S3File;
constructor(file: S3File) {
super();
this.file = file;
this.checksum = crypto.createHash("sha256");
}
_transform(chunk: any, encoding: string, callback: any) {
this.checksum.update(chunk);
this.push(chunk);
callback();
}
_flush(callback: any) {
this.file.checksum = this.checksum.digest("hex");
callback();
}
}
const s = new S3Storage({
s3,
bucket: "bucketName",
key: function() {
return Promise.resolve("andre");
},
streamTransformers: [
async (file: S3File, S3Storage, req) => {
return new Chunker(file);
}
]
});
multer({
storage: s
}).single("file")
MULTER_S3_TIMEOUT: The number of milliseconds to wait for the stream to come in before giving up. The reason we had to add this is because we are trying to hook to the data event when data is coming in. However, when a empty file comes in, no data comes through which results in the stream never starting or resolving which will result in the server timing out. We cannot use the open event since either multer or express is using the open event.
FAQs
A tool for uploading files to S3 using the express multer module.
We found that @openfin/multer-s3 demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 52 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
The Rust Security Response WG is warning of phishing emails from rustfoundation.dev targeting crates.io users.
Product
Socket now lets you customize pull request alert headers, helping security teams share clear guidance right in PRs to speed reviews and reduce back-and-forth.
Product
Socket's Rust support is moving to Beta: all users can scan Cargo projects and generate SBOMs, including Cargo.toml-only crates, with Rust-aware supply chain checks.