@nest-boot/file-upload 6.1.1 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,5 @@
1
- import { Client } from "minio";
1
+ /// <reference types="node" />
2
+ import { Client, ItemBucketMetadata } from "minio";
2
3
  import { FileUpload } from "./file-upload.object";
3
4
  import { FileUploadModuleOptions } from "./file-upload-options.interface";
4
5
  import { FileUploadInput } from "./inputs/file-upload.input";
@@ -8,5 +9,8 @@ export declare class FileUploadService {
8
9
  constructor(options: FileUploadModuleOptions);
9
10
  create(input: FileUploadInput[]): Promise<FileUpload[]>;
10
11
  persist(tmpUrl: string): Promise<string>;
11
- private copyObject;
12
+ upload(data: ReadableStream | Buffer | string, metadata: ItemBucketMetadata & {
13
+ "Content-Type": string;
14
+ }, persist?: boolean): Promise<string>;
15
+ private getFileUrl;
12
16
  }
@@ -28,7 +28,6 @@ let FileUploadService = class FileUploadService {
28
28
  this.ossClient = new minio_1.Client(options);
29
29
  }
30
30
  async create(input) {
31
- const acl = "private";
32
31
  const results = input.map(async (item) => {
33
32
  const key = `tmp/${(0, crypto_1.randomUUID)()}${(0, path_1.extname)(item.name)}`;
34
33
  const limit = this.options.limits?.find((v) => item.fileSize <= v.fileSize && v.mimeTypes.includes(item.mimeType));
@@ -38,7 +37,6 @@ let FileUploadService = class FileUploadService {
38
37
  }
39
38
  const policy = this.ossClient.newPostPolicy();
40
39
  policy.formData = {
41
- acl,
42
40
  bucket: this.options.bucket,
43
41
  key,
44
42
  success_action_status: "201",
@@ -47,7 +45,6 @@ let FileUploadService = class FileUploadService {
47
45
  policy.policy = {
48
46
  conditions: [
49
47
  ...(limit ? [["content-length-range", 1, limit.fileSize]] : []),
50
- ["eq", "$acl", acl],
51
48
  ["eq", "$bucket", this.options.bucket],
52
49
  ["eq", "$key", key],
53
50
  ["eq", "$success_action_status", "201"],
@@ -74,36 +71,28 @@ let FileUploadService = class FileUploadService {
74
71
  }
75
72
  // 临时文件转永久文件
76
73
  async persist(tmpUrl) {
77
- const filePath = "tmp/" + tmpUrl.split("/tmp/")[1];
78
- const filename = `files/${(0, dayjs_1.default)().format("YYYY/MM/DD")}/${filePath
74
+ const originPath = `${this.options.bucket}/tmp/${tmpUrl.split("/tmp/")[1]}`;
75
+ const targetPath = `files/${(0, dayjs_1.default)().format("YYYY/MM/DD")}/${originPath
79
76
  .split("/")
80
77
  .pop()}`;
81
- return await this.copyObject(filePath, filename);
78
+ const conditions = new minio_1.CopyConditions();
79
+ await this.ossClient.copyObject(this.options.bucket, targetPath, originPath, conditions);
80
+ return this.getFileUrl(targetPath);
82
81
  }
83
- // 不能使用 minio copyObject(),因为它会把原文件的策略也拷贝(aws-sdk 的 copyObject() 可以添加策略参数)
84
- // 并且 minio 只支持对 bucket 的策略配置,不支持对某对象进行策略配置
85
- async copyObject(originPath, filename) {
86
- const originMetadata = await this.ossClient.statObject(this.options.bucket, originPath);
87
- const dataStream = await this.ossClient.getObject(this.options.bucket, originPath);
88
- const data = await new Promise((resolve, reject) => {
89
- const chunks = [];
90
- dataStream.on("data", (chunk) => {
91
- chunks.push(chunk);
92
- });
93
- dataStream.on("end", () => {
94
- resolve(Buffer.concat(chunks));
95
- });
96
- dataStream.on("error", reject);
97
- });
98
- // 上传对象
99
- const metaData = {
100
- "Content-Type": originMetadata.metaData["content-type"],
101
- };
102
- // 无法设置 acl 等策略,会自动继承 files 目录的策略
103
- await this.ossClient.putObject(this.options.bucket, filename, data, metaData);
82
+ async upload(data, metadata, persist = false) {
83
+ const filePath = `tmp/${(0, dayjs_1.default)().format("YYYY/MM/DD")}/${(0, crypto_1.randomUUID)()}.${metadata["Content-Type"].split("/").pop()}`;
84
+ await this.ossClient.putObject(this.options.bucket, filePath, data, metadata);
85
+ const tmpUrl = this.getFileUrl(filePath);
86
+ if (!persist) {
87
+ return tmpUrl;
88
+ }
89
+ // 持久化
90
+ return await this.persist(tmpUrl);
91
+ }
92
+ getFileUrl(filePath) {
104
93
  return this.options.pathStyle
105
- ? `${this.options.useSSL !== false ? "https" : "http"}://${this.options.endPoint}${this.options.port ? `:${this.options.port}` : ""}/${this.options.bucket}/${filename}`
106
- : `${this.options.useSSL !== false ? "https" : "http"}://${this.options.bucket}.${this.options.endPoint}${this.options.port ? `:${this.options.port}` : ""}/${filename}`;
94
+ ? `${this.options.useSSL !== false ? "https" : "http"}://${this.options.endPoint}${this.options.port ? `:${this.options.port}` : ""}/${this.options.bucket}/${filePath}`
95
+ : `${this.options.useSSL !== false ? "https" : "http"}://${this.options.bucket}.${this.options.endPoint}${this.options.port ? `:${this.options.port}` : ""}/${filePath}`;
107
96
  }
108
97
  };
109
98
  exports.FileUploadService = FileUploadService;
@@ -1 +1 @@
1
- {"version":3,"file":"file-upload.service.js","sourceRoot":"","sources":["../src/file-upload.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-upload.service.js","sourceRoot":"","sources":["../src/file-upload.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,2CAAyE;AACzE,mCAAoC;AACpC,kDAA0B;AAC1B,iCAKe;AACf,+BAA+B;AAE/B,mFAAuE;AAMhE,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAG5B,YAEW,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;QAEzC,IAAI,CAAC,SAAS,GAAG,IAAI,cAAM,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAwB;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACvC,MAAM,GAAG,GAAG,OAAO,IAAA,mBAAU,GAAE,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAEvD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CACrC,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CACrE,CAAC;YAEF,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBAClC,aAAa;gBACb,MAAM,IAAI,4BAAmB,CAC3B,kDAAkD,CACnD,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;YAE9C,MAAM,CAAC,QAAQ,GAAG;gBAChB,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,GAAG;gBACH,qBAAqB,EAAE,KAAK;gBAC5B,cAAc,EAAE,IAAI,CAAC,QAAQ;aAC9B,CAAC;YAEF,MAAM,CAAC,MAAM,GAAG;gBACd,UAAU,EAAE;oBACV,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/D,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBACtC,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC;oBACnB,CAAC,IAAI,EAAE,wBAAwB,EAAE,KAAK,CAAC;oBACvC,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC;iBACvC;gBACD,wBAAwB;gBACxB,UAAU,EAAE,IAAI,IAAI,CAClB,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,IAAI,CACnD,CAAC,WAAW,EAAE;aAChB,CAAC;YAEF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAEvE,OAAO;gBACL,GAAG,EAAE,aAAa,CAAC,OAAO;gBAC1B,MAAM,EAAE;oBACN,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE;oBAClD,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC;yBACtC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC;yBAClC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;wBACvB,IAAI;wBACJ,KAAK;qBACN,CAAC,CAAC;iBACN;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,YAAY;IACZ,KAAK,CAAC,OAAO,CAAC,MAAc;QAC1B,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,QAAQ,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5E,MAAM,UAAU,GAAG,SAAS,IAAA,eAAK,GAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,UAAU;aACnE,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,EAAE,EAAE,CAAC;QAEX,MAAM,UAAU,GAAG,IAAI,sBAAc,EAAE,CAAC;QAExC,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,UAAU,EACV,UAAU,EACV,UAAU,CACX,CAAC;QAEF,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,MAAM,CACV,IAAsC,EACtC,QAAyD,EACzD,OAAO,GAAG,KAAK;QAEf,MAAM,QAAQ,GAAG,OAAO,IAAA,eAAK,GAAE,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,IAAA,mBAAU,GAAE,IAAI,QAAQ,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QAEpH,MACE,IAAI,CAAC,SAAS,CAAC,SAMhB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;QAEjD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM;QACN,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEO,UAAU,CAAC,QAAgB;QACjC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS;YAC3B,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,EAAE;YACxK,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,EAAE,CAAC;IAC7K,CAAC;CACF,CAAA;AAvHY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;IAKR,WAAA,IAAA,eAAM,EAAC,oDAAoB,CAAC,CAAA;;GAJpB,iBAAiB,CAuH7B"}