首页 > 其他分享 >springboot + uniapp 头像上传功能及样式模版

springboot + uniapp 头像上传功能及样式模版

时间:2024-06-16 18:00:29浏览次数:14  
标签:uniapp springboot 文件 模版 springframework file org import 上传

springboot + uniapp 头像上传和预览功能及样式模版

该头像上传使用 uni.chooseImage 方法从本地相册选择图片或使用相机拍照。

再通过 uni.uploadFile 将本地资源上传到服务器。具体使用方法请参考 uniapp 官网 API

以下是前端效果图:

在这里插入图片描述

上传之后效果

在这里插入图片描述

点击头像预览效果

在这里插入图片描述

前端代码

确保点击图片仅触发预览功能而不触发 avatarSwitch 函数,可以通过在图片元素上使用 @click.stop 修饰符来阻止事件传播。

<template>
	<view class="container">
		<view class="avatar-wrap" @click="avatarSwitch">
			<text>头像</text>
			<view class="avatar-image">
				<image :src="avatarUrl" @click.stop="previewImage"></image>
				<view class="avatar-symbol">></view>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				avatarUrl: '',
			}
		},
		methods: {
			avatarSwitch() {
				//从相册中选择头像
				uni.chooseImage({
					success: (res) => {
						uni.uploadFile({
							//你后端服务器地址
							url: `http://localhost:5050/files/file`,
							//要上传文件资源的路径
							filePath: res.tempFilePaths[0],
							//文件对应的名称,与后端接收的属性名一直 
							name: 'file',
							//请求中其他额外的数据
							formData: {},
							success: (uploadFileRes) => {
								this.avatarUrl = uploadFileRes.data;
							}
						});
					}
				});
			},
			//图片的预览
			previewImage() {
				uni.previewImage({
					urls: [this.avatarUrl]
				})
			}
		}
	}
</script>

<style lang="scss">
	.avatar-wrap {
		box-sizing: border-box;
		width: 100%;
		height: 140rpx;
		background-color: #fff;
		padding: 30rpx;
		display: flex;
		align-items: center;
		justify-content: space-between;
		color: #999;

		.avatar-image {
			display: flex;
			align-items: center;

			image {
				width: 100rpx;
				height: 100rpx;
				border-radius: 50%;
			}

			.avatar-symbol {
				margin-left: 15rpx;
			}
		}
	}
</style>

后端代码

首先是 application.yml 配置文件,端口号配置的 5050,根据你的需求更改。

自定义文件的存放位置:file:path: D://uploadPath/images/

# 端口号
server:
  port: 5050
spring:
  # 文件上传配置
  servlet:
    multipart:      
      #是否开启文件上传支持,默认是 true
      enabled: true
      #文件写入磁盘的阈值,默认是0
      file-size-threshold: 0
      # 设置单个文件的最大尺寸
      max-file-size: 10MB
      # 设置请求的最大尺寸
      max-request-size: 100MB
# 自定义图片存放位置
file:
  path: D://uploadPath/images/

controller 控制层代码

package com.test.blog.controller;

import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException;

@RestController
@RequestMapping("/files")
public class FilesUnloadController {
    // 文件上传路径
    @Value("${file.path}")
    private String filePath;

    // 单文件上传
    @RequestMapping("/file")
    public String upload(@RequestParam MultipartFile file, HttpServletRequest request) {
        // 获取服务器路径
        String serverPath = request.getScheme() + "://" + request.getServerName()
                + ":" + request.getServerPort();
        // 获取文件名
        String fileName = file.getOriginalFilename();
        // 保存文件
        File newFile = new File(filePath + '\\' + fileName);
        // 获取文件url
        String url = serverPath + "/images/" + fileName;
        // 判断父级文件目录是否存在,不存在则创建
        if (!newFile.getParentFile().exists()) {
            newFile.getParentFile().mkdirs();
            System.out.println("父级文件目录不存在,已创建目录");
        }
        try {
            // 保存文件
            file.transferTo(newFile);
            System.out.println("文件上传成功");
        } catch (IOException e) {
            // 程序错误
            e.printStackTrace();
            System.out.println("程序错误,请重新上传");
        }
        // 返回文件 url
        return url;
    }
}

添加一个配置类,将静态文件映射位置映射出去,可以通过 url 访问。

package com.test.blog.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class MyWebMvcConfig implements WebMvcConfigurer {
	// 设置静态资源映射
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/images/**").addResourceLocations("file:D:/uploadPath/images/");
    }
}

标签:uniapp,springboot,文件,模版,springframework,file,org,import,上传
From: https://blog.csdn.net/qq_59068516/article/details/139705921

相关文章

  • SpringBoot源码学习之AOP切面编程原理
    1.前言&目录AOP切面编程主要用于抽取与具体业务逻辑无关的逻辑并组织起来以另一种方式重新与业务逻辑“耦合”在一起。比如,在WEB项目中,往往需要对接口做鉴权、性能统计、日志记录、事务处理等,这些逻辑跟业务逻辑无关、是独立的,但它也是多数业务逻辑都需要的。将这些横跨多种......
  • Springboot计算机毕业设计远程在线诊疗系统小程序【附源码】开题+论文+mysql+程序+部
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,远程医疗作为一种新兴的医疗模式,正逐渐受到广泛关注和认可。特别是在疫情等突发公共卫生事件的影响下,远程在线诊疗系统小程序......
  • Springboot计算机毕业设计远景民宿酒店预订小程序【附源码】开题+论文+mysql+程序+部
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着旅游业的快速发展和消费者对旅游体验要求的提升,民宿作为一种独特的住宿方式,越来越受到游客的青睐。然而,传统的民宿预订方式存在着信息不对称、预......
  • 基于SpringBoot+Spark搭建本地计算引擎服务
    1.项目背景 上一篇文章我们讲解了搭建数据挖掘可视化系统(大数据数据挖掘系统可视化设计艺术-CSDN博客)的主要内容,通过构建算子工作流可以完成数据挖掘的工作。这时这里的算子可以提交到本地计算请求,也可以提交大数据集群做计算,本文将详细介绍搭建本地计算请求的过程。2.......
  • Java毕业设计-基于springboot开发的图书个性化推荐系统设计与实现-毕业论文(附毕设源代
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、前台首页功能模块2、管理员功能模块3、学生功能模块四、毕设内容和源代码获取总结Java毕业设计-基于springboot开发的图书个性化推荐系统......
  • Java毕业设计-基于springboot开发的图书管理系统-毕业论文(附毕设源代码)
    文章目录前言一、毕设成果演示(源代码在文末)二、毕设摘要展示1、开发说明2、需求/流程分析3、系统功能结构三、系统实现展示1、个人中心2、管理员管理3、用户管理4、图书出版社管理5、公告类型管理6、所在书架管理7、图书类型管理8、论坛管理9、公告信息管理10、图书信息......
  • springboot事务管理的机制是什么
    SpringBoot的事务管理机制实质上是基于Spring框架的事务处理机制。其主要目的是确保一系列数据库操作要么全部成功,要么全部失败(回滚),从而维护数据的完整性和一致性。SpringBoot事务管理遵循ACID四大特性:1、原子性(Atomicity)事务是一个原子操作单元,其对数据的修改要么全都执......
  • springboot的多线程事务能否保证事务的一致性
    在SpringBoot中,多线程事务的一致性取决于事务管理的配置和实现。SpringFramework本身提供了多种事务管理的方式,如基于注解的声明式事务、编程式事务等。在多线程环境下,要保证事务的一致性需要特别注意以下几点:事务传播属性(TransactionPropagation):在进行多线程事务处理时,需......
  • springboot+vue+mybatis家电系统+PPT+论文+讲解+售后
    随着信息互联网购物的飞速发展,一般企业都去创建属于自己的电商平台以及购物管理系统。本文介绍了家电销售系统的开发全过程。通过分析企业对于家电销售系统的需求,创建了一个计算机管理家电销售系统的方案。文章介绍了家电销售系统的系统分析部分,包括可行性分析等,系统设计部分主......
  • 【计算机毕业设计】基于springboot的大创管理系统【源码+lw+部署文档】
    包含论文源码的压缩包较大,请私信或者加我的绿色小软件获取免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。本人尊重原创作者或出版方,资料版权归原作者或出版方所有,本人不对所......