IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 文件的上传 -> 正文阅读

[大数据]文件的上传

java中文件的上传比较简单

主要包括:文件名生成,文件传输,数据库更新三大部分

1.控制层的处理器方法

	@RequestMapping(value = "upload/{id}.do")
    public ResultVo<Team> fileUpload(@RequestParam("logo")MultipartFile myfile, HttpServletRequest request,@PathVariable("id") Integer teamId){
        //获取文件要存储的位置的绝对路径
        String path = request.getServletContext().getRealPath("/img/uploadFile/");
        //拿到文件的原始名称
        String originalFilename = myfile.getOriginalFilename();
        //uuid拼接生成随即名
        String randomName = UUID.randomUUID().toString().replace("-", "");
        int i = originalFilename.lastIndexOf(".");
        String substring = originalFilename.substring(i);
        //拼接文件名
        String logoName = randomName + substring;
        int num=0;
        try {
        	//将文件传输至指定位置
            myfile.transferTo(new File(path+"/"+logoName));
            System.out.println("上传成功!"+path+"/"+logoName);
            //更新数据库
            Team team = new Team();
            team.setTeamId(teamId);
            team.setTeamLogo(logoName);
            Integer integer = teamService.updateTeam(team);
            if (integer == 1) {
                return new ResultVo<>();
            }
            return new ResultVo<>("500","服务器内部错误,请稍后再试");

        } catch (IOException e) {
            return new ResultVo<>("500","上传出错,错误代码:"+e.getMessage());
        }
    }

先生成不重复的文件名和路径

在这里插入图片描述

拼接路径,传输文件到指定位置

在这里插入图片描述
数据库动态更新,抛出异常
在这里插入图片描述

updateByPrimaryKeySelective()是动态更新,可以看之前的文章

在这里插入图片描述

2.前端页面部分,首先已有数据的内容要查询展示,这里是queryById的请求,就此掠过

 function queryAndShowInfo(teamId){
        //查询球队的名称和logo并回显到页面上
        $.ajax({
            type: "GET",
            url: "/team/"+teamId+".do", //RESTful风格的API定义
            data: "",
            success: function (vo) {
                let obj=vo.object;
                let teamId=obj.teamId;
                let teamLogo=obj.teamLogo;
                let teamName=obj.teamName;
                let chineseName=obj.chineseName;
                $("input[name='chineseName']").val(chineseName);
                if(teamLogo!=null){
                    $("img[name='teamLogo']").attr("src","/img/uploadFile/"+teamLogo);
                }else{
                    $("img[name='teamLogo']").addClass("hidden");
                    $("img[name='teamLogo']").parent().html("还没有上传logo图片");
                }
            }
        });
    }

文件ajax的上传整体实现

$(function () {
        //从url中获取页码和size的参数值
        let url = document.location.toString();
        let pageNum=url.GetValue("pageNum");
        let pageSize=url.GetValue("pageSize");
        let teamId=url.GetValue("teamId");
        $("input[name='pageNum']").val(pageNum);
        $("input[name='pageSize']").val(pageSize);
        $("input[name='teamId']").val(teamId);
        //查询球队的名称和logo并回显到页面上
        queryAndShowInfo(teamId);
        myUploadLogo(teamId,pageNum,pageSize);
    });

    function myUploadLogo(teamId,pageNum,pageSize) {
        //使用js把文件域转换成fileinput对象
         $("#logo").fileinput({
             uploadUrl:"/team/upload/"+teamId+".do", //接受请求地址
             uploadAsync : true, //默认异步上传
             showUpload : true, //是否显示上传按钮,跟随文本框的那个
             showRemove : true, //显示移除按钮,跟随文本框的那个
             showCaption : true,//是否显示标题,就是那个文本框
             showPreview : true, //是否显示预览,不写默认为true
             dropZoneEnabled : false,//是否显示拖拽区域,默认不写为true,但是会占用很大区域
             //minImageWidth: 50, //图片的最小宽度
             //minImageHeight: 50,//图片的最小高度
             //maxImageWidth: 1000,//图片的最大宽度
             //maxImageHeight: 1000,//图片的最大高度
             //maxFileSize: 0,//单位为kb,如果为0表示不限制文件大小
             //minFileCount: 0,
             maxFileCount : 1, //表示允许同时上传的最大文件个数
             enctype : 'multipart/form-data',
             validateInitialCount : true,
            /* previewFileIcon : "<i class='glyphicon glyphicon-king'></i>",*/
             msgFilesTooMany : "选择上传的文件数量({n}) 超过允许的最大数值{m}!",
            allowedFileTypes : [ 'image' ],//配置允许文件上传的类型
             allowedPreviewTypes : [ 'image' ],//配置所有的被预览文件类型
           // allowedPreviewMimeTypes : ['image/jpeg','image/jpg'],//控制被预览的所有mime类型
             language : 'zh'
         });
        //异步上传返回结果处理
        $('#logo').on('fileerror', function(event, data, msg) {
            alert("上传失败!"+msg);
        });
        //异步上传返回结果处理
        $("#logo").on("fileuploaded", function(event, data, previewId, index) {
            let ref = $(this).attr("data-ref");
            $("input[name='" + ref + "']").val(data.response.url);
            //上传成功
            window.location.href = "/pages/team/list.html?pageNum="+pageNum+"&pageSize="+pageSize;
        });
    }
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 13:58:47  更:2022-01-01 13:59:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:55:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码