Skip to content

Commit a2049fb

Browse files
committed
feat(oss): support upload folder
1 parent d8925a2 commit a2049fb

File tree

1 file changed

+24
-5
lines changed
  • packages/app-console/src/views/storage

1 file changed

+24
-5
lines changed

packages/app-console/src/views/storage/files.vue

+24-5
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@
55
<el-button size="mini" plain class="filter-item" type="primary" icon="el-icon-refresh" @click="handleFilter">
66
刷新
77
</el-button>
8-
<el-button size="mini" plain class="filter-item" type="primary" icon="el-icon-upload" @click="dialogFormVisible = true">
9-
上传文件
10-
</el-button>
11-
<el-button size="mini" plain class="filter-item" type="default" icon="el-icon-new" @click="createDirectory">
8+
<el-dropdown trigger="click" size="mini" class="filter-item" style="margin-left: 10px; margin-right: 10px;" @command="handleUploadCommand">
9+
<el-button size="mini" plain type="primary">
10+
<i class="el-icon-upload el-icon--left"></i>上传<i class="el-icon-arrow-down el-icon--right"></i>
11+
</el-button>
12+
<el-dropdown-menu slot="dropdown">
13+
<el-dropdown-item command="uploadFile">上传文件</el-dropdown-item>
14+
<el-dropdown-item command="uploadFolder">上传文件夹</el-dropdown-item>
15+
</el-dropdown-menu>
16+
</el-dropdown>
17+
<el-button size="mini" plain class="filter-item" type="primary" icon="el-icon-new" @click="createDirectory">
1218
新建文件夹
1319
</el-button>
1420
<div class="filter-item" style="margin-left: 20px;">
@@ -94,6 +100,7 @@
94100
<el-upload
95101
v-if="bucketDetail.credentials"
96102
drag
103+
multiple
97104
action=""
98105
:auto-upload="true"
99106
:http-request="uploadFile"
@@ -238,9 +245,21 @@ export default {
238245
assert(file && file.Key, 'invalid file or filename')
239246
return file.Key.split('/').at(-1)
240247
},
248+
handleUploadCommand (command) {
249+
this.dialogFormVisible = true
250+
if (command === 'uploadFolder') {
251+
this.$nextTick(() => {
252+
document.getElementsByClassName('el-upload__input')[0].webkitdirectory = true
253+
})
254+
} else {
255+
this.$nextTick(() => {
256+
document.getElementsByClassName('el-upload__input')[0].webkitdirectory = false
257+
})
258+
}
259+
},
241260
async uploadFile(param) {
242261
const file = param.file
243-
const key = this.currentPath + file.name
262+
const key = this.currentPath + (file.webkitRelativePath ? file.webkitRelativePath : file.name)
244263
const res = await oss.uploadAppFile(this.bucket, key, file, this.bucketDetail.credentials, { contentType: file.type })
245264
if (res.$response?.httpResponse?.statusCode !== 200) {
246265
return showError('文件上传失败:' + key)

0 commit comments

Comments
 (0)