feat: allows upload through Local API

This commit is contained in:
James
2021-02-05 16:09:53 -05:00
parent fd01715b5b
commit 1a590287ea
13 changed files with 129 additions and 13 deletions

View File

@@ -0,0 +1,22 @@
import fs from 'fs';
import mime from 'mime';
import { File } from './types';
const getFileByPath = (filePath: string): File => {
if (typeof filePath === 'string') {
const data = fs.readFileSync(filePath);
const mimetype = mime.getType(filePath);
const name = filePath.split('/').pop();
return {
data,
mimetype,
name,
};
}
return undefined;
};
export default getFileByPath;

View File

@@ -0,0 +1,21 @@
import { Readable } from 'stream';
import fs from 'fs';
/**
* Save buffer data to a file.
* @param {Buffer} buffer - buffer to save to a file.
* @param {string} filePath - path to a file.
*/
const saveBufferToFile = async (buffer: Buffer, filePath: string): Promise<void> => {
// Setup readable stream from buffer.
let streamData = buffer;
const readStream = new Readable();
readStream._read = () => {
readStream.push(streamData);
streamData = null;
};
// Setup file system writable stream.
return fs.writeFileSync(filePath, buffer);
};
export default saveBufferToFile;

View File

@@ -41,3 +41,9 @@ export type Upload = {
staticDir: string
adminThumbnail?: string
}
export type File = {
data: Buffer
mimetype: string
name: string
}