@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
|
-
|
|
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
|
-
|
|
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
|
|
78
|
-
const
|
|
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
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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}/${
|
|
106
|
-
: `${this.options.useSSL !== false ? "https" : "http"}://${this.options.bucket}.${this.options.endPoint}${this.options.port ? `:${this.options.port}` : ""}/${
|
|
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":";;;;;;;;;;;;;;;;;;AAAA,2CAAyE;AACzE,mCAAoC;AACpC,kDAA0B;AAC1B,
|
|
1
|
+
{"version":3,"file":"file-upload.service.js","sourceRoot":"","sources":["../src/file-upload.service.ts"],"names":[],"mappings":"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"}
|