mirror of
https://github.com/labring/FastGPT.git
synced 2026-05-07 01:02:55 +08:00
e36d9d794f
* doc * feat: file upload config * perf: chat box file params * feat: markdown show file * feat: chat file store and clear * perf: read file contentType * feat: llm vision config * feat: file url output * perf: plugin error text * perf: image load * feat: ai chat document * perf: file block ui * feat: read file node * feat: file read response field * feat: simple mode support read files * feat: tool call * feat: read file histories * perf: select file * perf: select file config * i18n * i18n * fix: ts; feat: tool response preview result
84 lines
1.9 KiB
TypeScript
84 lines
1.9 KiB
TypeScript
import { isProduction } from '../system/constants';
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
|
|
export const removeFilesByPaths = (paths: string[]) => {
|
|
paths.forEach((path) => {
|
|
fs.unlink(path, (err) => {
|
|
if (err) {
|
|
// console.error(err);
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
export const guessBase64ImageType = (str: string) => {
|
|
const imageTypeMap: Record<string, string> = {
|
|
'/': 'image/jpeg',
|
|
i: 'image/png',
|
|
R: 'image/gif',
|
|
U: 'image/webp',
|
|
Q: 'image/bmp',
|
|
P: 'image/svg+xml',
|
|
T: 'image/tiff',
|
|
J: 'image/jp2',
|
|
S: 'image/x-tga',
|
|
I: 'image/ief',
|
|
V: 'image/vnd.microsoft.icon',
|
|
W: 'image/vnd.wap.wbmp',
|
|
X: 'image/x-xbitmap',
|
|
Z: 'image/x-xpixmap',
|
|
Y: 'image/x-xwindowdump'
|
|
};
|
|
|
|
const defaultType = 'image/jpeg';
|
|
if (typeof str !== 'string' || str.length === 0) {
|
|
return defaultType;
|
|
}
|
|
|
|
const firstChar = str.charAt(0);
|
|
return imageTypeMap[firstChar] || defaultType;
|
|
};
|
|
|
|
export const getFileContentTypeFromHeader = (header: string): string | undefined => {
|
|
const contentType = header.split(';')[0];
|
|
return contentType;
|
|
};
|
|
|
|
export const clearDirFiles = (dirPath: string) => {
|
|
if (!fs.existsSync(dirPath)) {
|
|
return;
|
|
}
|
|
|
|
fs.rmdirSync(dirPath, {
|
|
recursive: true
|
|
});
|
|
};
|
|
|
|
export const clearTmpUploadFiles = () => {
|
|
if (!isProduction) return;
|
|
const tmpPath = '/tmp';
|
|
|
|
fs.readdir(tmpPath, (err, files) => {
|
|
if (err) return;
|
|
|
|
for (const file of files) {
|
|
if (file === 'v8-compile-cache-0') continue;
|
|
|
|
const filePath = path.join(tmpPath, file);
|
|
|
|
fs.stat(filePath, (err, stats) => {
|
|
if (err) return;
|
|
|
|
// 如果文件是在2小时前上传的,则认为是临时文件并删除它
|
|
if (Date.now() - stats.mtime.getTime() > 2 * 60 * 60 * 1000) {
|
|
fs.unlink(filePath, (err) => {
|
|
if (err) return;
|
|
console.log(`Deleted temp file: ${filePath}`);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
};
|