Skip to main content

AssetStorageStrategy

AssetStorageStrategy​

The AssetPersistenceStrategy determines how Asset files are physically stored and retrieved.

info

This is configured via the assetOptions.assetStorageStrategy property of your VendureConfig.

Signature
interface AssetStorageStrategy extends InjectableStrategy {
writeFileFromBuffer(fileName: string, data: Buffer): Promise<string>;
writeFileFromStream(fileName: string, data: Stream): Promise<string>;
readFileToBuffer(identifier: string): Promise<Buffer>;
readFileToStream(identifier: string): Promise<Stream>;
deleteFile(identifier: string): Promise<void>;
fileExists(fileName: string): Promise<boolean>;
toAbsoluteUrl?(request: Request, identifier: string): string;
}

writeFileFromBuffer​

method
(fileName: string, data: Buffer) => Promise<string>

Writes a buffer to the store and returns a unique identifier for that file such as a file path or a URL.

writeFileFromStream​

method
(fileName: string, data: Stream) => Promise<string>

Writes a readable stream to the store and returns a unique identifier for that file such as a file path or a URL.

readFileToBuffer​

method
(identifier: string) => Promise<Buffer>

Reads a file based on an identifier which was generated by the writeFile method, and returns the as a Buffer.

readFileToStream​

method
(identifier: string) => Promise<Stream>

Reads a file based on an identifier which was generated by the writeFile method, and returns the file as a Stream.

deleteFile​

method
(identifier: string) => Promise<void>

Deletes a file from the storage.

fileExists​

method
(fileName: string) => Promise<boolean>

Check whether a file with the given name already exists. Used to avoid naming conflicts before saving the file.

toAbsoluteUrl​

method
(request: Request, identifier: string) => string

Convert an identifier as generated by the writeFile... methods into an absolute url (if it is not already in that form). If no conversion step is needed (i.e. the identifier is already an absolute url) then this method should not be implemented.