Skip to content

Commit dd743d0

Browse files
committed
fix(fs): fix to support auto naming for file uploads;
1 parent 25c9f58 commit dd743d0

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

packages/storage-service/src/router/file/index.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { handleUploadFile } from "./upload"
44
import { handleGetFile } from "./get"
55
import { handleMakeDir } from "./mkdir"
66
import { handleDeleteFile } from "./delete"
7+
import { generateUUID } from "../../lib/utils"
8+
import path = require("path")
79

810
export const FileRouter = express.Router()
911

@@ -12,7 +14,8 @@ export const FileRouter = express.Router()
1214
*/
1315
const storage = multer.diskStorage({
1416
filename: (_req, file, cb) => {
15-
cb(null, file.originalname)
17+
const { ext } = path.parse(file.originalname)
18+
cb(null, generateUUID() + ext)
1619
},
1720
})
1821
const uploader = multer({ storage })

packages/storage-service/src/router/file/upload.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ export async function handleUploadFile(req: express.Request, res: express.Respon
1818
const parent = req.query?.path as string || "/"
1919
const bucket_name = req.params.bucket as string
2020
const token = req.query?.token as string
21+
const auto_name = Number(req.query?.auto ?? 0)
2122

2223
// check given params
2324
if (!req.file) {
@@ -30,10 +31,12 @@ export async function handleUploadFile(req: express.Request, res: express.Respon
3031
return res.status(400).send('bucket not found')
3132
}
3233

34+
const filename = auto_name ? req.file.filename : req.file.originalname
35+
3336
// check file permissions
34-
const filename = path.join(parent, req.file.originalname)
37+
const filename_full = path.join(parent, filename)
3538
if (bucket.mode !== BucketMode.PUBLIC_READ_WRITE) {
36-
const [code, message] = checkFileOperationToken(bucket, token, FS_OPERATION.WRITE, filename)
39+
const [code, message] = checkFileOperationToken(bucket, token, FS_OPERATION.WRITE, filename_full)
3740
if (code) {
3841
return res.status(code).send(message)
3942
}
@@ -45,19 +48,19 @@ export async function handleUploadFile(req: express.Request, res: express.Respon
4548
}
4649

4750
// check if file already exist
48-
if (await pathExists(bucket_name, filename)) {
51+
if (await pathExists(bucket_name, filename_full)) {
4952
return res.send({ code: 'ALREADY_EXISTED', error: "file already exists" })
5053
}
5154

5255
// construct file metadata
5356
const metadata: FileItemMeta = {
5457
contentType: req.file.mimetype,
5558
parent,
56-
name: req.file.originalname,
59+
name: filename,
5760
}
5861

5962
// start save
6063
const storage = new GridFSStorage(bucket_name, DatabaseAgent.db)
61-
const data = await storage.save(req.file.path, filename, metadata)
64+
const data = await storage.save(req.file.path, filename_full, metadata)
6265
return res.send({ code: 0, data })
6366
}

packages/system-client/src/views/storage/files.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
上传文件
1818
</el-button>
1919
<el-button size="mini" plain class="filter-item" type="default" icon="el-icon-new" @click="createDirectory">
20-
新建目录
20+
新建文件夹
2121
</el-button>
2222
<div class="filter-item" style="margin-left: 20px;">
2323
<span style="font-size: 16px;color: gray; margin-right: 5px;">当前:</span>

0 commit comments

Comments
 (0)