WHAT YOU'LL LEARN
  • How to retrieve files and file metadata?
  • How to upload files using presigned URLs?
  • How to handle large file uploads with multipart upload?
  • How to manage file records and tags?

Overview
anchor

The FileManagerSdk provides methods for managing files in Webiny File Manager. Access it via sdk.fileManager on a Webiny instance. The SDK handles file metadata operations (create, read, update, delete) and provides helpers for uploading files to S3 using presigned URLs. For large files, multipart upload is supported automatically based on configurable size thresholds.

Reading Files
anchor

getFile
anchor

Retrieves a single file by ID.

Parameters:

NameTypeRequiredDescription
paramsGetFileParamsYesParameters for getting the file
params.idstringYesID of the file to retrieve
params.fieldsstring[]YesFields to return (e.g., ["id", "name", "src", "size"])

Returns:

Result<FmFile, HttpError | GraphQLError | NetworkError> — Result containing the file data or an error.

Example:

listFiles
anchor

Lists files with filtering, sorting, and pagination.

Parameters:

NameTypeRequiredDescription
paramsListFilesParamsYesParameters for listing files
params.fieldsstring[]YesFields to return for each file
params.searchstringNoSearch query to filter files by name
params.whereFmFileListWhereInputNoFilter conditions
params.limitnumberNoMaximum number of files to return
params.afterstringNoCursor for pagination
params.sortFmFileListSorter[]NoSort order (e.g., ["savedOn_DESC"])

Returns:

Result<ListFilesResult, HttpError | GraphQLError | NetworkError> — Result containing:

  • data — Array of FmFile objects
  • meta — Pagination metadata (cursor, hasMoreItems, totalCount)

Example:

Available sort options:

  • savedOn_ASC / savedOn_DESC
  • createdOn_ASC / createdOn_DESC
  • name_ASC / name_DESC
  • key_ASC / key_DESC
  • type_ASC / type_DESC
  • size_ASC / size_DESC

listTags
anchor

Lists all tags used on files with usage counts.

Parameters:

NameTypeRequiredDescription
paramsListTagsParamsNoParameters for listing tags
params.whereFmTagsListWhereInputNoFilter conditions
params.where.createdBystringNoFilter by creator ID
params.where.tags_startsWithstringNoFilter tags starting with prefix
params.where.tags_not_startsWithstringNoFilter tags not starting with prefix

Returns:

Result<FmTag[], HttpError | GraphQLError | NetworkError> — Result containing array of tags with counts.

Example:

Creating and Updating Files
anchor

createFile
anchor

Creates a new file record in File Manager. If a file is provided, it uploads to S3 first using presigned POST (small files) or multipart upload (large files).

Parameters:

NameTypeRequiredDescription
paramsCreateFileParamsYesParameters for creating the file
params.dataCreateFileDataYesFile metadata
params.data.namestringYes*File name
params.data.typestringYes*MIME type (e.g., "image/png")
params.data.sizenumberNoFile size in bytes
params.data.keystringNoCustom S3 key
params.data.keyPrefixstringNoCustom key prefix
params.data.locationFmLocationInputNoFolder location ({ folderId: string })
params.data.tagsstring[]NoTags for the file
params.fileBuffer \| Blob \| FileNoActual file content to upload
params.fieldsstring[]YesFields to return for created file
params.onProgress(progress: UploadProgress) => voidNoUpload progress callback
params.multiPartThresholdnumberNoThreshold in MB for multipart upload (default: 100)
params.signalAbortSignalNoAbortSignal for cancellation

*Required when file is provided.

Returns:

Result<FmFile, HttpError | GraphQLError | NetworkError> — Result containing the created file data.

Example (metadata only):

Example (with file upload):

createFiles
anchor

Creates multiple file records in bulk with concurrent uploads.

Parameters:

NameTypeRequiredDescription
paramsCreateFilesParamsYesParameters for creating multiple files
params.filesArray<{ file?, data, fields, onProgress? }>YesArray of files to create
params.multiPartThresholdnumberNoThreshold in MB for multipart upload (default: 100)
params.concurrencynumberNoNumber of concurrent uploads (default: 5)
params.strategyBatchUploadStrategyNo"fail-fast" or "continue" (default: "fail-fast")
params.signalAbortSignalNoAbortSignal for cancellation

Returns:

Result<CreateFilesResult, HttpError | GraphQLError | NetworkError> — Result containing:

  • successful — Array of successfully created FmFile objects
  • failed — Array of failed uploads with error details

Example:

updateFile
anchor

Updates file metadata (does not re-upload file content).

Parameters:

NameTypeRequiredDescription
paramsUpdateFileParamsYesParameters for updating the file
params.idstringYesID of the file to update
params.dataUpdateFileDataYesUpdated file metadata
params.data.namestringNoUpdated file name
params.data.tagsstring[]NoUpdated tags
params.data.locationFmLocationInputNoUpdated folder location
params.fieldsstring[]YesFields to return for updated file

Returns:

Result<FmFile, HttpError | GraphQLError | NetworkError> — Result containing the updated file data.

Example:

deleteFile
anchor

Deletes a file record from File Manager.

Parameters:

NameTypeRequiredDescription
paramsDeleteFileParamsYesParameters for deleting the file
params.idstringYesID of the file to delete

Returns:

Result<boolean, HttpError | GraphQLError | NetworkError> — Result containing true on success.

Example:

Upload Helpers
anchor

getPresignedPostPayload
anchor

Gets a presigned POST URL for uploading a file directly to S3 from a browser.

Parameters:

NameTypeRequiredDescription
paramsGetPresignedPostPayloadParamsYesParameters for getting presigned POST payload
params.namestringYesFile name
params.typestringYesMIME type
params.sizenumberYesFile size in bytes
params.keystringNoCustom S3 key
params.keyPrefixstringNoCustom key prefix

Returns:

Result<PresignedPostPayloadResponse, HttpError | GraphQLError | NetworkError> — Result containing:

  • data — Presigned POST payload with url and fields
  • file — File metadata including generated id and key

Example:

getPresignedPostPayloads
anchor

Gets presigned POST URLs for multiple files in bulk.

Parameters:

NameTypeRequiredDescription
paramsGetPresignedPostPayloadsParamsYesParameters for getting presigned POST payloads
params.filesGetPresignedPostPayloadParams[]YesArray of file metadata

Returns:

Result<PresignedPostPayloadResponse[], HttpError | GraphQLError | NetworkError> — Result containing array of presigned POST payloads.

Example:

createMultiPartUpload
anchor

Initiates a multipart upload for large files.

Parameters:

NameTypeRequiredDescription
paramsCreateMultiPartUploadParamsYesParameters for creating multipart upload
params.dataobjectYesFile metadata (same as GetPresignedPostPayloadParams)
params.data.namestringYesFile name
params.data.typestringYesMIME type
params.data.sizenumberYesFile size in bytes
params.data.keystringNoCustom S3 key
params.data.keyPrefixstringNoCustom key prefix
params.numberOfPartsnumberYesNumber of parts to split file into

Returns:

Result<MultiPartUploadResponse, HttpError | GraphQLError | NetworkError> — Result containing:

  • uploadId — Upload ID for tracking
  • file — File metadata including id and key
  • parts — Array of presigned URLs for each part ({ partNumber, url })

Example:

completeMultiPartUpload
anchor

Completes a multipart upload after all parts are uploaded.

Parameters:

NameTypeRequiredDescription
paramsCompleteMultiPartUploadParamsYesParameters for completing multipart upload
params.fileKeystringYesS3 key from createMultiPartUpload response
params.uploadIdstringYesUpload ID from createMultiPartUpload response

Returns:

Result<boolean, HttpError | GraphQLError | NetworkError> — Result containing true on success.

Example:

Type Reference
anchor

FmFile
anchor

Represents a file in File Manager.

FmTag
anchor

Represents a tag with usage count.

FmListMeta
anchor

Pagination metadata for list operations.

FmFile_Metadata
anchor

File metadata including image dimensions and EXIF data.

FmFile_AccessControl
anchor

File access control settings.

PresignedPostPayloadResponse
anchor

Response containing presigned POST data for S3 upload.

MultiPartUploadResponse
anchor

Response containing multipart upload data.

UploadProgress
anchor

Upload progress callback data.