@kne/fastify-file-manager 2.0.10 → 2.0.13
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.
- package/libs/services/file-record.js +57 -10
- package/package.json +1 -1
|
@@ -48,6 +48,7 @@ module.exports = fp(async (fastify, options) => {
|
|
|
48
48
|
hash.update(buffer);
|
|
49
49
|
writeStream.write(buffer);
|
|
50
50
|
fileSize = buffer.byteLength;
|
|
51
|
+
writeStream.end();
|
|
51
52
|
} else {
|
|
52
53
|
throw new Error('文件类型不支持');
|
|
53
54
|
}
|
|
@@ -95,13 +96,21 @@ module.exports = fp(async (fastify, options) => {
|
|
|
95
96
|
file.storageType = storageType;
|
|
96
97
|
await file.save();
|
|
97
98
|
return file;
|
|
98
|
-
})(() =>
|
|
99
|
-
|
|
100
|
-
|
|
99
|
+
})(() =>
|
|
100
|
+
models.fileRecord.create({
|
|
101
|
+
filename,
|
|
102
|
+
namespace: namespace || options.namespace,
|
|
103
|
+
encoding,
|
|
104
|
+
mimetype,
|
|
105
|
+
hash: digest,
|
|
106
|
+
size: fileSize,
|
|
107
|
+
storageType
|
|
108
|
+
})
|
|
109
|
+
);
|
|
101
110
|
return Object.assign({}, outputFile.get({ plain: true }), { id: outputFile.uuid });
|
|
102
111
|
};
|
|
103
112
|
|
|
104
|
-
const uploadFromUrl = async ({ id, url, namespace }) => {
|
|
113
|
+
const uploadFromUrl = async ({ id, url, filename: originFilename, namespace }) => {
|
|
105
114
|
const response = await fetch(url);
|
|
106
115
|
if (!response.ok) {
|
|
107
116
|
throw new Error('下载文件失败');
|
|
@@ -142,13 +151,20 @@ module.exports = fp(async (fastify, options) => {
|
|
|
142
151
|
}
|
|
143
152
|
}
|
|
144
153
|
|
|
154
|
+
if (originFilename) {
|
|
155
|
+
filename = originFilename;
|
|
156
|
+
}
|
|
157
|
+
|
|
145
158
|
const searchParams = new URLSearchParams(url.split('?')[1]);
|
|
146
159
|
if (searchParams.get('filename')) {
|
|
147
160
|
filename = searchParams.get('filename');
|
|
148
161
|
}
|
|
149
162
|
|
|
150
163
|
const tempFile = {
|
|
151
|
-
filename,
|
|
164
|
+
filename,
|
|
165
|
+
mimetype: response.headers.get('content-type'),
|
|
166
|
+
encoding: 'binary',
|
|
167
|
+
file: nodeStream
|
|
152
168
|
};
|
|
153
169
|
return await uploadToFileSystem({ id, file: tempFile, namespace });
|
|
154
170
|
};
|
|
@@ -183,11 +199,13 @@ module.exports = fp(async (fastify, options) => {
|
|
|
183
199
|
targetFile = await ossServices.downloadFile({ filename: targetFileName });
|
|
184
200
|
}
|
|
185
201
|
return Object.assign({}, file.get({ pain: true }), {
|
|
186
|
-
id: file.uuid,
|
|
202
|
+
id: file.uuid,
|
|
203
|
+
filePath: targetFileName,
|
|
204
|
+
targetFile
|
|
187
205
|
});
|
|
188
206
|
};
|
|
189
207
|
|
|
190
|
-
const getFileList = async ({ filter, currentPage, perPage }) => {
|
|
208
|
+
const getFileList = async ({ filter = {}, currentPage, perPage }) => {
|
|
191
209
|
// namespace: namespace || options.namespace
|
|
192
210
|
const queryFilter = {};
|
|
193
211
|
|
|
@@ -211,11 +229,39 @@ module.exports = fp(async (fastify, options) => {
|
|
|
211
229
|
};
|
|
212
230
|
}
|
|
213
231
|
|
|
232
|
+
if (filter?.id) {
|
|
233
|
+
queryFilter.uuid = {
|
|
234
|
+
[Op.like]: `%${filter.id}%`
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (filter?.createdAt) {
|
|
239
|
+
if (filter.createdAt.startTime && filter.createdAt.endTime) {
|
|
240
|
+
queryFilter.createdAt = {
|
|
241
|
+
[Op.between]: [filter.createdAt.startTime, filter.createdAt.endTime]
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
if (filter.createdAt.startTime && !filter.createdAt.endTime) {
|
|
245
|
+
queryFilter.createdAt = {
|
|
246
|
+
[Op.gte]: filter.createdAt.startTime
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
if (!filter.createdAt.startTime && filter.createdAt.endTime) {
|
|
250
|
+
queryFilter.createdAt = {
|
|
251
|
+
[Op.lte]: filter.createdAt.endTime
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
214
256
|
const { count, rows } = await models.fileRecord.findAndCountAll({
|
|
215
|
-
where: queryFilter,
|
|
257
|
+
where: queryFilter,
|
|
258
|
+
offset: perPage * (currentPage - 1),
|
|
259
|
+
limit: perPage,
|
|
260
|
+
order: [['createdAt', 'desc']]
|
|
216
261
|
});
|
|
217
262
|
return {
|
|
218
|
-
pageData: rows.map(item => Object.assign({}, item.get({ plain: true }), { id: item.uuid })),
|
|
263
|
+
pageData: rows.map(item => Object.assign({}, item.get({ plain: true }), { id: item.uuid })),
|
|
264
|
+
totalCount: count
|
|
219
265
|
};
|
|
220
266
|
};
|
|
221
267
|
|
|
@@ -260,7 +306,8 @@ module.exports = fp(async (fastify, options) => {
|
|
|
260
306
|
}
|
|
261
307
|
|
|
262
308
|
return Object.assign({}, file.get({ plain: true }), {
|
|
263
|
-
id: file.uuid,
|
|
309
|
+
id: file.uuid,
|
|
310
|
+
buffer
|
|
264
311
|
});
|
|
265
312
|
};
|
|
266
313
|
|