ContentService
The ContentService interface provides file storage and management capabilities in Pikku applications. It supports signed URLs, file uploads, downloads, and operations across different storage backends.
Methods​
signContentKey(contentKey: string, dateLessThan: Date, dateGreaterThan?: Date): Promise<string>​
Signs a content key to generate a secure, time-limited access URL.
- Parameters:
contentKey: The key representing the content objectdateLessThan: The expiration time for the signed URLdateGreaterThan: Optional start time before which access is denied
- Returns: Promise resolving to the signed URL
signURL(url: string, dateLessThan: Date, dateGreaterThan?: Date): Promise<string>​
Signs an arbitrary URL to generate a secure, time-limited access URL.
- Parameters:
url: The full URL that needs signingdateLessThan: The expiration time for the signed URLdateGreaterThan: Optional start time before which access is denied
- Returns: Promise resolving to the signed URL
getUploadURL(fileKey: string, contentType: string): Promise<{ uploadUrl: string; assetKey: string }>​
Generates a signed URL for uploading a file directly to storage.
- Parameters:
fileKey: The desired key/location of the uploaded filecontentType: The MIME type of the file
- Returns: Promise resolving to an object with upload URL and finalized asset key
deleteFile(fileName: string): Promise<boolean>​
Deletes a file from the storage backend.
- Parameters:
fileName: The name or key of the file to delete
- Returns: Promise resolving to boolean indicating success
writeFile(assetKey: string, stream: ReadStream): Promise<boolean>​
Uploads a file stream to storage under a specified asset key.
- Parameters:
assetKey: The key where the file will be savedstream: A readable stream of the file contents
- Returns: Promise resolving to boolean indicating success
copyFile(assetKey: string, fromAbsolutePath: string): Promise<boolean>​
Copies a file from a local absolute path into storage under a new asset key.
- Parameters:
assetKey: The destination keyfromAbsolutePath: The local absolute file path
- Returns: Promise resolving to boolean indicating success
readFile(assetKey: string): Promise<ReadStream>​
Reads a file from storage as a readable stream.
- Parameters:
assetKey: The key of the file to read
- Returns: Promise resolving to a readable file stream
Usage Example​
// Upload and manage files
const fileHandler: CorePikkuFunction<
{ fileData: string },
{ uploadUrl: string; downloadUrl: string }
> = async (services, data) => {
// Get signed upload URL
const { uploadUrl, assetKey } = await services.content.getUploadURL(
'uploads/document.pdf',
'application/pdf'
)
// Generate signed download URL (expires in 1 hour)
const expirationTime = new Date(Date.now() + 60 * 60 * 1000)
const downloadUrl = await services.content.signContentKey(
assetKey,
expirationTime
)
return { uploadUrl, downloadUrl }
}
Implementation​
Pikku provides a local file system implementation for development:
loading...
For production, you can use cloud storage implementations like S3:
loading...
Interface​
loading...