SpringBoot+Vue+Ant组件实现图片上传

<template>
	<a-upload
		name="file"
		list-type="picture-card"
		class="avatar-uploader"
		:show-upload-list="false"
		action="/crmapi/upload/uploadPic"
		:before-upload="beforeUpload"
		@change="handleChange"
		>
			<img v-if="imageUrl" :src="imageUrl" alt="avatar" />
			<div v-else>
				<a-icon :type="photoLoading ? 'loading' : 'plus'" />
					<div class="ant-upload-text">
                            Upload
					</div>
			</div>
	</a-upload>
</template>
<script>
function getBase64(img, callback) {
    const reader = new FileReader();
    reader.addEventListener('load', () => callback(reader.result));
    reader.readAsDataURL(img);
}
export default {
	data() {
	        return {
	        	photoLoading: false,
	            imageUrl: '',
			};
	},
}
 methods: {
        handleChange(info) {
            console.log(info)
            if (info.file.status === 'uploading') {
                this.photoLoading = true;
                return;
            }
            if (info.file.status === 'done') {
                console.log(info.file.originFileObj)
                getBase64(info.file.originFileObj, imageUrl => {
                    this.imageUrl = imageUrl;
                    this.photoLoading = false;
                });
                this.file = info.file.originFileObj
            }
        },
        beforeUpload(file) {
            console.log(file)
            const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
            if (!isJpgOrPng) {
                this.$message.error('You can only upload JPG file!');
            }
            const isLt2M = file.size / 1024 / 1024 < 2;
            if (!isLt2M) {
                this.$message.error('Image must smaller than 2MB!');
            }
            return isJpgOrPng && isLt2M;
        },
        }
</script>
  • 配置文件配置信息
#图片上传
spring.servlet.multipart.enabled=true
#单个数据的大小
spring.servlet.multipart.max-file-size=3MB
#总数据的大小
spring.servlet.multipart.max-request-size=3MB
#文件夹路径
pic_path=D:\\pic
  • 后台方法代码
@RestController
@RequestMapping("/upload")
public class CheckController {
	@Value("${pic_path}")
    private String pic_path;

 	/**
     * 图片上传
     * @param file 图片对象
     */
    @PostMapping("/uploadPic")
    public String uploadPic(@RequestParam MultipartFile file, HttpServletRequest request) throws Exception {
    	// 文件路径
        String path = "";
        // 判断上传的文件是否为空
        if (file != null) {
            String type = "";
            String fileName = file.getOriginalFilename();// 文件原名称
            
            // 获取文件类型
            type = fileName.indexOf(".") != -1 ? fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()) : null;
           
            // 文件类型不为空时
            if (type != null) {
                //过滤文件类型
                if ("PNG".equals(type.toUpperCase()) || "JPG".equals(type.toUpperCase())) {
                    // 自定义的文件名称
                    String newFileName = String.valueOf(System.currentTimeMillis()) + "." + type;

                    //判断所存放文件夹是否存在,不存在则创建
                    File dir = new File(pic_path);
                    if (!dir.exists()) {
                        dir.mkdirs();
                    }
                    
                    //图片存放路径
                    path = pic_path+"\\"+fileName;
                    
                    // 转存文件到指定的路径
                    file.transferTo(new File(path));

                    return "图片上传成功";
                }
            } else {
                return "图片类型错误";
            }
        } else {
            return "图片不可为空";
        }
        return "图片上传失败";
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值