vue+springboot图片上传和显示的示例代码

下面是详细的"vue+springboot图片上传和显示的示例代码"攻略:

1. 前端部分

1.1 Vue组件设计

首先,我们需要设计一个Vue组件,用于上传图片。在组件中包含一个input元素和一个button元素,其中input的类型为file,这样用户就可以通过点击button选取图片。

<template>
    <div>
        <input type="file" @change="onUpload"></input>
        <button @click="upload">上传</button>
    </div>
</template>

<script>
    export default {
        data() {
            return {
                file: null
            }
        },
        methods: {
            onUpload(event) {
                this.file = event.target.files[0];
            },
            upload() {
                // TODO: 调用后端接口上传图片
            }
        }
    }
</script>

在组件的data属性中,我们定义了一个file属性,用于存储用户选取的图片。在input的change事件中,我们将用户选取的图片保存在file属性中。

在upload方法中,我们需要调用后端接口上传图片。这个接口的具体实现方式,我们在后面再讲。

1.2 使用axios调用后端接口

在Vue组件中,使用axios可以非常方便地调用后端接口。我们需要安装axios,然后在组件中引入axios库。我们在upload方法中使用axios发起POST请求,把用户选取的图片数据发送给后端。

接下来是代码示例:

<script>
    import axios from 'axios'

    export default {
        data() {
            return {
                file: null
            }
        },
        methods: {
            onUpload(event) {
                this.file = event.target.files[0];
            },
            upload() {
                let formData = new FormData();
                formData.append('file', this.file);

                axios.post('/api/upload', formData, {
                    headers: {
                        'Content-Type': 'multipart/form-data'
                    }
                }).then(response => {
                    console.log(response.data);
                }).catch(error => {
                    console.log(error);
                });
            }
        }
    }
</script>

在这个示例中,我们使用了FormData对象,将用户选取的图片数据与请求一起发送。

1.3 显示图片

当图片上传成功后,我们需要在页面上显示出来。在Vue组件中,我们可以通过绑定img标签的src属性,将后端返回的图片地址显示在页面上。

<template>
    <div>
        <input type="file" @change="onUpload"></input>
        <button @click="upload">上传</button>
        <img v-if="imageUrl" :src="imageUrl" />
    </div>
</template>

<script>
    import axios from 'axios'

    export default {
        data() {
            return {
                file: null,
                imageUrl: null
            }
        },
        methods: {
            onUpload(event) {
                this.file = event.target.files[0];
            },
            upload() {
                let formData = new FormData();
                formData.append('file', this.file);

                axios.post('/api/upload', formData, {
                    headers: {
                        'Content-Type': 'multipart/form-data'
                    }
                }).then(response => {
                    this.imageUrl = response.data.imageUrl;
                }).catch(error => {
                    console.log(error);
                });
            }
        }
    }
</script>

在这个示例中,我们新增加了一个img标签,如果imageUrl属性存在,则显示图片。

2. 后端部分

2.1 SpringBoot文件上传的实现

在后端部分,我们需要实现一个文件上传的接口。这个接口的作用是,将接收到的图片数据进行存储,并返回图片存储的地址。

@RestController
@RequestMapping("/api")
public class FileUploadController {

    @Value("${upload.path}")
    private String uploadPath;

    @PostMapping("/upload")
    public ResultVO uploadFile(@RequestParam("file") MultipartFile file) {
        String fileName = file.getOriginalFilename();

        try {
            File targetFile = new File(uploadPath + File.separator + fileName);
            file.transferTo(targetFile);

            String imageUrl = "http://localhost:8080/images/" + fileName;
            return ResultVO.ok(imageUrl);
        } catch (IOException e) {
            e.printStackTrace();
            return ResultVO.error("上传失败");
        }
    }
}

在这个示例中,我们使用了SpringMVC的注解@RequestParam,获取前端发送的文件数据。利用MultipartFile对象,我们可以获取到文件的原始名称,并将文件存储到指定的路径中。在这个示例中,我们将文件存储在了“upload.path”指定的路径下,最终返回的图片地址为“http://localhost:8080/images/文件名”。

2.2 配置文件上传路径

为了使得文件上传的路径可以进行配置,我们需要在application.yml中进行配置。如下所示:

upload:
 path: /usr/local/images

在这个示例中,我们将上传路径指定为“/usr/local/images”。启动项目之后,可以看到文件将保存到这个路径下。

至此,我们完成了"vue+springboot图片上传和显示的示例代码"的详细讲解,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue+springboot图片上传和显示的示例代码 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JavaScript forEach中return失效问题解决方案

    JavaScript的forEach方法是遍历数组的常用方法之一,但是在使用过程中,我们可能会遇到return失效的问题。本文将详细讲解forEach中return失效问题的解决方案,包含以下几个方面: forEach方法的回调函数参数 break语句使用的问题 使用some方法代替forEach方法 1. forEach方法的回调函数参数 在了解 retu…

    JavaScript 2023年5月28日
    00
  • js常用自定义公共函数汇总

    JS常用自定义公共函数是指在JS开发中常用的、可多次使用的函数,初学者建议掌握,提高开发效率。 常用自定义公共函数 1. 获取URL查询参数 在开发中,获取URL中的查询参数是很常见的需求。以下是一个获取URL中查询参数的函数: function getQueryString(name) { var reg = new RegExp("(^|&am…

    JavaScript 2023年5月27日
    00
  • 如何处理vue router 路由传参刷新页面参数丢失

    处理Vue Router路由传参刷新页面参数丢失的攻略非常重要,下面是完整的步骤以及代码示例。 1. 使用query传参 在路由中使用query传参,是一种非常常见的方法。但是在使用query传参的时候,需要注意以下几点: 如果地址栏中存在多个参数,为了避免参数重叠,参数名最好使用前缀的方式,例如”user_id=12″可以更改为”user[id]=12″或…

    JavaScript 2023年6月11日
    00
  • JavaScript if else

    JavaScript 中的 if else 语句是一种流程控制结构,它根据条件执行不同的代码块。if 语句用于在条件为 true 时执行代码块,而 else 语句用于在条件为 false 时执行代码块。 if else 语句的语法如下: if (condition) { // some code } else { // some other code } 其…

    Web开发基础 2023年3月30日
    00
  • 详解JavaScript实现动态的轮播图效果

    完整攻略:详解JavaScript实现动态的轮播图效果 背景介绍 轮播图是现代网站中常见的交互元素之一,作为一种动态的展示形式,可以吸引用户的注意力,增强用户体验。因此,对于前端开发人员来说,能够熟练掌握实现轮播图的技术是非常重要的。 本篇文章将会详细介绍如何使用JavaScript实现动态的轮播图效果,让读者掌握这项技术。 实现方法 步骤一:HTML结构 …

    JavaScript 2023年6月11日
    00
  • JavaScript中关于base64的一些事

    JavaScript中关于base64的一些事 什么是Base64 Base64是一种将二进制数据编码成可打印ASCII字符的方式。它可以将常见的图片、音频、视频等二进制文件以文本方式存储,方便数据传输和存储。 Base64编码与解码 Base64编码 在JavaScript中,可以使用btoa()函数将文本或二进制数据转换为Base64编码。 const …

    JavaScript 2023年5月19日
    00
  • Javascript和Ajax中文乱码吐血版解决方案

    以下是“Javascript和Ajax中文乱码吐血版解决方案”的完整攻略。 问题背景 在使用Javascript和Ajax编写中文网站时,可能会出现中文乱码的问题,导致网站无法正常显示中文内容。这是因为Javascript和Ajax默认使用的是UTF-8编码,而服务器返回的数据可能是其他编码方式,例如GB2312编码。如果两种编码方式不一致,就会出现中文乱码…

    JavaScript 2023年5月19日
    00
  • JS实现将数据导出到Excel的方法详解

    下面是“JS实现将数据导出到Excel的方法详解”的完整攻略。 一、介绍 在开发过程中,我们经常需要将数据导出到Excel,并进一步进行处理或者查看。有多种方法可以实现数据导出到Excel,其中一种常用的方法就是使用JavaScript。JavaScript可以生成表格,并将其转化为Excel文件,然后自动下载到本地。本文将分步讲解如何使用JavaScrip…

    JavaScript 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部