333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
import 'egg';
import { Readable } from 'stream';
interface EggFile {
  field: string;
  filename: string;
  encoding: string;
  mime: string;
  filepath: string;
}
 
interface MultipartOptions {
  requireFile?: boolean; // required file submit, default is true
  defCharset?: string;
  limits?: {
    fieldNameSize?: number;
    fieldSize?: number;
    fields?: number;
    fileSize?: number;
    files?: number;
    parts?: number;
    headerPairs?: number;
  };
  checkFile?(
    fieldname: string,
    file: any,
    filename: string,
    encoding: string,
    mimetype: string
  ): void | Error;
}
 
interface MultipartFileStream extends Readable {
  fields: any;
 
  filename: string;
 
  fieldname: string;
 
  mime: string;
 
  mimeType: string;
 
  transferEncoding: string;
 
  encoding: string;
 
  truncated: boolean;
}
 
interface ScheduleOptions {
  type?: string;
  cron?: string;
  cronOptions?: {
    tz?: string;
    utc?: boolean;
    iterator?: boolean;
    currentDate?: string|number|Date;
    endDate?: string|number|Date;
  };
  interval?: number|string;
  immediate?: boolean;
  disable?: boolean;
  env?: string[];
}
 
declare module 'egg' {
  interface Context {
    /**
     * clean up request tmp files helper
     * @param {EggFile[]} files file paths need to clenup, default is `ctx.request.files`.
     * @return {Promise<void>}
     */
    cleanupRequestFiles(files?: EggFile[]): Promise<void>;
 
    /**
     * create multipart.parts instance, to get separated files.
     * @param {MultipartOptions} options
     * @return {Function} return a function which return a Promise
     */
    multipart(options?: MultipartOptions): (fn?: Function) => Promise<any>;
 
    /**
     * get upload file stream
     * @param {MultipartOptions} options
     * @return {Promise<MultipartFileStream>}
     */
    getFileStream(options?: MultipartOptions): Promise<MultipartFileStream>
 
  }
 
  interface Request {
    /**
     * Files Object Array
     */
    files: EggFile[];
  }
 
  interface EggAppConfig {
    multipart: {
      mode?: string;
      autoFields?: boolean;
      defaultCharset?: string;
      fieldNameSize?: number;
      fieldSize?: string|number;
      fields?: number;
      fileSize?: string|number;
      files?: number;
      whitelist?: () => string[]|string[];
      fileExtensions?: string[];
      tmpdir?: string;
      cleanSchedule?: ScheduleOptions;
    }
  }
}