"feat: 同步功能增强与配置优化,支持多类型同步及日志分级"
This commit is contained in:
@@ -24,6 +24,7 @@ type Options = {
|
||||
check?: boolean;
|
||||
returnContent?: boolean;
|
||||
setToken?: boolean;
|
||||
hash?: string;
|
||||
[key: string]: any;
|
||||
};
|
||||
export const fetchLink = async (url: string, opts?: Options) => {
|
||||
@@ -39,8 +40,10 @@ export const fetchLink = async (url: string, opts?: Options) => {
|
||||
if (token && setToken) {
|
||||
fetchURL.searchParams.set('token', token);
|
||||
}
|
||||
if (opts?.hash) {
|
||||
fetchURL.searchParams.set('hash', opts.hash);
|
||||
}
|
||||
fetchURL.searchParams.set('download', 'true');
|
||||
console.log('fetchURL', fetchURL.toString());
|
||||
|
||||
const res = await fetch(fetchURL.toString());
|
||||
const blob = await res.blob();
|
||||
@@ -52,6 +55,7 @@ export const fetchLink = async (url: string, opts?: Options) => {
|
||||
const pathname = fetchURL.pathname;
|
||||
const filename = pathname.split('/').pop();
|
||||
return {
|
||||
status: res.status,
|
||||
filename,
|
||||
blob,
|
||||
type,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { getBufferHash, getHash } from '@/uitls/hash.ts';
|
||||
import FormData from 'form-data';
|
||||
import { logger } from '../logger.ts';
|
||||
export const handleResponse = async (err: any, res: any) => {
|
||||
return new Promise((resolve) => {
|
||||
if (err) {
|
||||
@@ -27,6 +28,9 @@ export const getFormParams = (opts: UploadOptions, headers: any): FormData.Submi
|
||||
if (opts.token) {
|
||||
// url.searchParams.append('token', opts.token);
|
||||
}
|
||||
if (opts.meta) {
|
||||
url.searchParams.append('meta', encodeURIComponent(JSON.stringify(opts.meta)));
|
||||
}
|
||||
const value: FormData.SubmitOptions = {
|
||||
path: url.pathname + url.search,
|
||||
host: url.hostname,
|
||||
@@ -38,7 +42,7 @@ export const getFormParams = (opts: UploadOptions, headers: any): FormData.Submi
|
||||
...headers,
|
||||
},
|
||||
};
|
||||
console.log('getFormParams', value);
|
||||
logger.debug('getFormParams', value);
|
||||
return value;
|
||||
};
|
||||
type UploadOptions = {
|
||||
@@ -47,7 +51,21 @@ type UploadOptions = {
|
||||
token?: string;
|
||||
form?: FormData;
|
||||
needHash?: boolean;
|
||||
hash?: string;
|
||||
meta?: Record<string, any>;
|
||||
};
|
||||
/**
|
||||
* 单个文件上传
|
||||
* @param opts
|
||||
* @param opts.url 上传地址
|
||||
* @param opts.file 文件路径或Buffer
|
||||
* @param opts.token token
|
||||
* @param opts.form form对象
|
||||
* @param opts.needHash 是否需要hash
|
||||
* @param opts.hash hash
|
||||
* @param opts.meta meta
|
||||
* @returns
|
||||
*/
|
||||
export const upload = (opts: UploadOptions): Promise<{ code?: number; message?: string; [key: string]: any }> => {
|
||||
const form = opts?.form || new FormData();
|
||||
if (!opts.form) {
|
||||
@@ -62,7 +80,7 @@ export const upload = (opts: UploadOptions): Promise<{ code?: number; message?:
|
||||
}
|
||||
form.append('file', value);
|
||||
if (opts.needHash) {
|
||||
hash = getBufferHash(value);
|
||||
hash = opts?.hash || getBufferHash(value);
|
||||
opts.url = new URL(opts.url.toString());
|
||||
opts.url.searchParams.append('hash', hash);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { Logger } from '@kevisual/logger/node';
|
||||
|
||||
const level = process.env.LOG_LEVEL || 'info';
|
||||
export const logger = new Logger({
|
||||
level: 'info',
|
||||
level: level as any,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user