Add range header support to files.get (#6950)
This commit is contained in:
@@ -32,7 +32,8 @@ export default abstract class BaseStorage {
|
||||
* @param key The path to the file
|
||||
*/
|
||||
public abstract getFileStream(
|
||||
key: string
|
||||
key: string,
|
||||
range?: { start?: number; end?: number }
|
||||
): Promise<NodeJS.ReadableStream | null>;
|
||||
|
||||
/**
|
||||
|
||||
@@ -131,8 +131,12 @@ export default class LocalStorage extends BaseStorage {
|
||||
};
|
||||
}
|
||||
|
||||
public getFileStream(key: string) {
|
||||
return Promise.resolve(fs.createReadStream(this.getFilePath(key)));
|
||||
public getFileStream(key: string, range?: { start: number; end: number }) {
|
||||
return Promise.resolve(fs.createReadStream(this.getFilePath(key), range));
|
||||
}
|
||||
|
||||
public stat(key: string) {
|
||||
return fs.stat(this.getFilePath(key));
|
||||
}
|
||||
|
||||
private getFilePath(key: string) {
|
||||
|
||||
@@ -201,12 +201,16 @@ export default class S3Storage extends BaseStorage {
|
||||
});
|
||||
}
|
||||
|
||||
public getFileStream(key: string): Promise<NodeJS.ReadableStream | null> {
|
||||
public getFileStream(
|
||||
key: string,
|
||||
range?: { start: number; end: number }
|
||||
): Promise<NodeJS.ReadableStream | null> {
|
||||
return this.client
|
||||
.send(
|
||||
new GetObjectCommand({
|
||||
Bucket: this.getBucket(),
|
||||
Key: key,
|
||||
Range: range ? `bytes=${range.start}-${range.end}` : undefined,
|
||||
})
|
||||
)
|
||||
.then((item) => item.Body as NodeJS.ReadableStream)
|
||||
|
||||
Reference in New Issue
Block a user