@rtorcato/api-upload v1.0.0
Interfaces
UploadedFile
Defined in: index.ts:8
A file uploaded to S3 — the multer file plus the fields multer-s3 adds.
Properties
fieldname
fieldname:
string
Defined in: index.ts:9
originalname
originalname:
string
Defined in: index.ts:10
mimetype
mimetype:
string
Defined in: index.ts:11
size
size:
number
Defined in: index.ts:12
bucket
bucket:
string
Defined in: index.ts:14
Bucket the object was written to.
key
key:
string
Defined in: index.ts:16
Object key.
location
location:
string
Defined in: index.ts:18
Public URL / S3 location of the object.
etag
etag:
string
Defined in: index.ts:19
contentType
contentType:
string
Defined in: index.ts:20
UploadOptions
Defined in: index.ts:23
Properties
s3
s3:
S3Client
Defined in: index.ts:25
S3 client the object is written with (you own its config/credentials).
bucket
bucket:
string
Defined in: index.ts:27
Destination bucket.
field
field:
string
Defined in: index.ts:29
Multipart form field holding the file.
key
key:
string| ((req,file) =>string)
Defined in: index.ts:31
Object key — a string, or a function of the request + file for deterministic keys.
isPublic?
optionalisPublic?:boolean
Defined in: index.ts:33
public-read ACL when true, otherwise private. Default: false.
cacheControl?
optionalcacheControl?:string
Defined in: index.ts:35
Cache-Control stored on the object. Default: max-age=31536000 (1 year).
metadata?
optionalmetadata?:Record<string,string>
Defined in: index.ts:37
Extra object metadata.
maxSizeBytes?
optionalmaxSizeBytes?:number
Defined in: index.ts:39
Max request size in bytes (checked against Content-Length); exceeding it rejects with a 413 before anything streams to S3.
Functions
uploadFile()
uploadFile(
req,res,options):Promise<UploadedFile>
Defined in: index.ts:62
Upload a single file from a multipart request straight to S3, resolving with the stored object's details.
Rejects with an HttpError (from @rtorcato/api-errors): 413 file_too_large
when maxSizeBytes is exceeded, 400 no_file when the field is empty, and a
400 for any other multer error — so it slots into the error-handler middleware.
Parameters
req
Request
res
Response
options
Returns
Promise<UploadedFile>
Example
app.post('/avatar', async (req, res, next) => {
try {
const file = await uploadFile(req, res, {
s3, bucket: 'avatars', field: 'avatar', key: `users/${req.user.id}.png`, isPublic: true,
})
res.json({ url: file.location })
} catch (err) { next(err) }
})