<template>
<file-upload v-model="fileList" action="/api">
<template #trigger>
<el-button type="primary">上传文件</el-button>
</template>
<template #tip>
文件大小不超过 500M
</template>
</file-upload>
</template>
<script lang="ts" setup>
import type { Files } from "silence-file-upload";
const fileList = ref<Files[]>([
{ fileName: "xxxxx", filePath: "" },
{ fileName: "xxxxx", filePath: "" }
]);
</script>
<template
<file-upload v-model="fileList_" :http-request="httpRequest" />
</template>
<script lang="ts" setup>
import { type Ref, ref } from "vue";
import type { Files } from "silence-file-upload";
const fileList_ = ref<Files[]>([
{ fileName: "xxx.js", filePath: "" },
{ fileName: "yyy.css", filePath: "" }
]);
function httpRequest(fileList: Ref<Files[]>, index: number, file: File) {
const formData = new FormData();
formData.append("file", file, file.name);
request({
url: "/",
method: "post",
data: formData,
onUploadProgress: function (ev: ProgressEvent) {
const progress = ev.loaded / ev.total * 100;
fileList.value[index].progress = progress;
if (progress === 100) fileList.value[index].status = "success";
}
}).then(res => {
if (res.code === 200) {
fileList.value[index].status = "success";
fileList_.value.push({
fileName: fileList.value[index].fileName,
filePath: fileList.value[index].filePath
});
}
}).catch(() => {
fileList.value[index].status = "error";
})
}
</script>