vue+element-ui动态加载多个assets中以书籍id命名且与书籍id对应的图片的具体代码
时间: 2024-02-18 10:00:17 浏览: 97
好的,以下是实现这个功能的具体代码:
1. 在 Vue 组件中引入 Element-UI 中的 Upload 组件,并设置属性 action 为上传图片的接口地址。
```html
<template>
<div>
<el-upload
class="upload-demo"
:action="uploadUrl"
:on-success="uploadSuccess"
:file-list="fileList"
multiple>
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
</div>
</template>
<script>
import { ElUpload, ElButton } from 'element-ui';
export default {
components: {
ElUpload,
ElButton,
},
data() {
return {
uploadUrl: 'your-upload-api-url',
fileList: [],
};
},
methods: {
uploadSuccess(response, file, fileList) {
// 上传成功后的处理逻辑
},
},
};
</script>
```
2. 在接口中,将上传的图片保存到指定的文件夹中,并将图片的文件名设置为书籍 id。
这里的具体实现逻辑会因为后端语言和框架而有所不同,我这里提供一种伪代码:
```php
<?php
if ($_FILES['file']) {
// 获取上传的文件
$file = $_FILES['file'];
// 获取书籍 id
$bookId = $_POST['bookId'];
// 设置文件名为书籍 id
$filename = $bookId . '.jpg';
// 保存文件到指定文件夹
move_uploaded_file($file['tmp_name'], '/path/to/your/uploads/folder/' . $filename);
// 返回上传成功的信息
echo json_encode([
'code' => 0,
'msg' => '上传成功',
'data' => [
'url' => '/path/to/your/uploads/folder/' . $filename,
],
]);
}
```
3. 在 Vue 组件中使用 v-for 遍历书籍列表,并使用 v-bind:src 绑定书籍对应的图片地址。
```html
<template>
<div>
<div v-for="book in books" :key="book.id">
<img :src="require(`@/assets/${book.id}.jpg`)">
<p>{{ book.title }}</p>
</div>
</div>
</template>
<script>
export default {
data() {
return {
books: [
{
id: 1,
title: 'Book 1',
},
{
id: 2,
title: 'Book 2',
},
// ...
],
};
},
};
</script>
```
在上面的代码中,books 是一个包含了多个书籍对象的数组,每个书籍对象都有一个 id 和 title 属性。
4. 在绑定图片地址时,使用 require 动态加载图片。
```html
<img :src="require(`@/assets/${book.id}.jpg`)">
```
这里使用了 require 动态加载图片,注意路径中的反引号和 ${book.id} 的使用,这样就可以根据书籍 id 动态加载多个 assets 中以书籍 id 命名且与书籍 id 对应的图片了。
希望这个代码能够帮到您!
阅读全文