59 lines
1.3 KiB
Vue
59 lines
1.3 KiB
Vue
<docs>
|
||
---
|
||
order: 9
|
||
title:
|
||
zh-CN: 自定义预览
|
||
en-US: Customize preview file
|
||
---
|
||
|
||
## zh-CN
|
||
|
||
自定义本地预览,用于处理非图片格式文件(例如视频文件)。
|
||
|
||
## en-US
|
||
|
||
Customize local preview. Can handle with non-image format files such as video.
|
||
</docs>
|
||
|
||
<template>
|
||
<div>
|
||
<a-upload
|
||
v-model:file-list="fileList"
|
||
list-type="picture"
|
||
action="//jsonplaceholder.typicode.com/posts/"
|
||
:preview-file="previewFile"
|
||
>
|
||
<a-button>
|
||
<upload-outlined></upload-outlined>
|
||
Upload
|
||
</a-button>
|
||
</a-upload>
|
||
</div>
|
||
</template>
|
||
<script lang="ts">
|
||
import { UploadOutlined } from '@ant-design/icons-vue';
|
||
import { defineComponent, ref } from 'vue';
|
||
|
||
export default defineComponent({
|
||
components: {
|
||
UploadOutlined,
|
||
},
|
||
setup() {
|
||
const previewFile = async (file: any): Promise<Response> => {
|
||
console.log('Your upload file:', file);
|
||
// Your process logic. Here we just mock to the same file
|
||
const res = await fetch('https://next.json-generator.com/api/json/get/4ytyBoLK8', {
|
||
method: 'POST',
|
||
body: file,
|
||
});
|
||
const { thumbnail } = await res.json();
|
||
return thumbnail;
|
||
};
|
||
return {
|
||
previewFile,
|
||
fileList: ref([]),
|
||
};
|
||
},
|
||
});
|
||
</script>
|