zoukankan      html  css  js  c++  java
  • vueJs 图片上传预览

    前端vue代码片段

    我用的前端框架是ant design,不同的框架上传方法也许不同,不过大同小异

    selfUpload({action, file, onSuccess, onError, onProgress}) {
                    // let params = {'file': file}
                    var params = new FormData();
                    params.append('file', file, file.name);
    
                    upload(params).then(res => {
                        if (res.code == 200) {
                            this.$message.success('上传成功');
                        } else {
                            this.$message.error('上传失败');
                        }
                    }).catch(err => {
                        this.$message.error('系统内部错误');
                    });
    
                    const base64 = new Promise(resolve => {
                        const fileReader = new FileReader();
                        fileReader.readAsDataURL(file);
                        fileReader.onload = () => {
                            resolve(fileReader.result);
                            //图片url
                            this.previewImage = fileReader.result;
    
                            //提交用户头像全局变量
                            this.$store.commit('changeAvatar', fileReader.result);
                            this.editable = false;
                        };
                    });
                }

    后端代码(我有使用安全框架shiro,没事用的话,那就不太清楚了,最好自己debugger看看file对象,一步一步来)

    @PostMapping(value = "/upload")
        public CommonResult upload(HttpServletRequest request) {
            //转换成文件上传请求
            ShiroHttpServletRequest shiroHttpServletRequest = (ShiroHttpServletRequest) request;
            MultipartHttpServletRequest multipartRequest = new CommonsMultipartResolver().resolveMultipart((HttpServletRequest) shiroHttpServletRequest);
    
            //获取文件上传对象
            MultipartFile file = multipartRequest.getFile("file");
    
            //获取当前对象
            String currentUserToken = (String) SecurityUtils.getSubject().getPrincipal();
            String username = JWTUtil.getUsername(currentUserToken);
    
            SysUser sysUser = userService.findByName(username);
    
            String fileName = file.getOriginalFilename();
            //FileUtil 是使用hutool 工具类的   touch  : 创建文件,如果父目录不存在也自动创建
            //resourceConfig.getImageUrl()  本地存储路径(并非图片服务器)
            String path = resourceConfig.getImageUrl() + fileName;
            //我是用的是hutool工具包
            File mkdir = FileUtil.touch(path);
            try {
                //据说性能不错,使用方便,还没验证
                file.transferTo(mkdir);
                 sysUser.setAvatarUrl(path);
    
                userService.saveOrUpdate(sysUser);
                return CommonResult.success("上传成功", fileName);
            } catch (IOException e) {
                e.printStackTrace();
            }
            return CommonResult.error("上传失败");
        }

    这样vueJs图片上传预览就完成了

  • 相关阅读:
    面向对象的本质是算法的上下文封装,是同一类属的行为接口的一致性
    结构化方法和面向对象方法的比较
    需求文档和软件都是服务的集合
    注意 Laravel 清除缓存 php artisan cache:clear 的一个坑
    面向对象复习笔记(一)
    详解如何在Laravel中增加自定义全局函数
    Laravel 引入自定义类库或第三方类库
    PHP怎么调用其他类的方法
    Laravel如何引用第三方(自定义)库
    laravel框架手机发送验证码
  • 原文地址:https://www.cnblogs.com/quliang/p/11968771.html
Copyright © 2011-2022 走看看