首页 > 其他分享 >B/S大文件上传详解及实例代码

B/S大文件上传详解及实例代码

时间:2022-12-23 16:45:46浏览次数:64  
标签:文件 form 实例 控件 上传 详解 data 源码


上传文件的jsp中的部分

 

上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求

    1. 通过form表单向后端发送请求

         <form id="postForm" action="${pageContext.request.contextPath}/UploadServlet" method="post" enctype="multipart/form-data">

            <div class="bbxx wrap">

                <input type="text" id="side-profile-name" name="username" class="form-control">

                <input type="file" id="example-file-input" name="avatar">

                <button type="submit" class="btn btn-effect-ripple btn-primary">Save</button>

            </div>

        </form>

改进后的代码不需要form标签,直接由控件来实现。开发人员只需要关注业务逻辑即可。JS中已经帮我们封闭好了

正在上传…重新上传取消

通过监控工具可以看到控件提交的数据,非常的清晰,调试也非常的简单。

编辑

 

2. 通过ajax向后端发送请求

        1.

            $.ajax({ 

                 url : "${pageContext.request.contextPath}/UploadServlet", 

                 type : "POST", 

                 data : $( '#postForm').serialize(), 

                 success : function(data) { 

                      $( '#serverResponse').html(data); 

                 }, 

                 error : function(data) { 

                      $( '#serverResponse').html(data.status + " : " + data.statusText + " : " + data.responseText); 

                 } 

            }); 

ajax分为两部分,一部分是初始化,文件在上传前通过AJAX请求通知服务端进行初始化操作

编辑

 

在文件上传完后向服务器发送通知

编辑

 

这里需要处理一个MD5秒传的逻辑,当服务器存在相同文件时,不需要用户再上传,而是直接通知用户秒传

编辑

这里可以看到秒传的逻辑是非常 简单的,并不是特别的复杂。

            var form = new FormData();

            form.append("username","zxj");

            form.append("avatar",file);

            //var form = new FormData($("#postForm")[0]);

            $.ajax({

                url:"${pageContext.request.contextPath}/UploadServlet",

                type:"post",

                data:form,

                processData:false,

                contentType:false,

                success:function(data){

         

                    console.log(data);

                }

            });

java部分

文件初始化的逻辑

编辑

 

接收文件块数据,在这个逻辑中我们接收文件块数据。控件对数据进行了优化,可以方便调试。如果用监控工具可以看到控件提交的数据。

编辑

 

注:

1. 上面的java部分的代码可以直接使用,只需要将上传的图片路径及收集数据并将数据写入到数据库即可

2. 上面上传文件使用到了字节流,其实还可以使用别的流,这个需要读者自己在下面完善测试

3. BeanUtils是一个工具 便于将实体对应的属性赋给实体

4. 上传文件不能使用 request.getParameter("")获取参数了,而是直接将request解析,通过判断每一项是文件还是非文件,然后进行相应的操作(文件的话就是用流来读取,非文件的话,暂时保存到一个map中。)

后端代码逻辑大部分是相同的,目前能够支持MySQL,Oracle,SQL。在使用前需要配置一下数据库

 

控件源码下载:

asp.net源码下载jsp-springboot源码下载jsp-eclipse源码下载jsp-myeclipse源码下载php源码下载csharp-winform源码下载vue-cli源码下载c++源码下载

详细配置信息及思路

欢迎入群一起讨论“374992201”

标签:文件,form,实例,控件,上传,详解,data,源码
From: https://www.cnblogs.com/zyzzz/p/17001020.html

相关文章

  • 目标检测—Faster R-CNN详解
    简介FasterR-CNN是继R-CNN,FastR-CNN后基于Region-CNN的又一目标检测力作。FasterR-CNN发表于NIPS2015。即便是2015年的算法,在现在也仍然有着广泛的应用以及不俗的精度......
  • JavaScript大文件上传详解及实例代码
    ​以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传 ......
  • C++中map用法详解
    Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1.map最基本的构造函数;map<string,......
  • Day07_05_分布式教程之分布式事务详解
    分布式事务详解一.分布式事务的概念随着分布式计算的发展,事务在分布式计算领域也得到了广泛的应用.在单机数据库中,我们很容易能够实现一套满足 ​​ACID​​ 特性的事......
  • Day10_08_消息队列之RabbitMQ消息可靠性传输 消息确认机制 死信队列详解及代码实现
    RabbitMQ消息可靠性传输消息确认机制死信队列详解及代码实现一.消息可靠传递的重要性我们在项目中使用RabbitMQ时,可能会遇到这样的问题:假如在一个订单系统中,用户付款......
  • Day10_09_消息队列之RabbitMQ消息可靠性详解
    RabbitMQ消息可靠性详解一.消息发送确认与消息接收确认(ACK)默认情况下如果一个Message被消费者正确接收则会被从Queue中移除.如果一个Queue没被任何消费者订阅消费,......
  • Day11_03_Redis教程之Redis服务器客户端安装配置及配置文件详解
    Redis服务器客户端安装配置及配置文件详解一.Redis的安装在ubuntu18.04下,可以直接通过命令安装.1.更新系统环境$sudoapt-getupdate#更新软件列表$sudoapt-getupgra......
  • js大文件上传详解及实例代码
    ​4GB以上超大文件上传和断点续传服务器的实现随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求。但是在很......
  • DataTable小详解
    @目录DataTable小详解基础操作筛选DataTable数据DataTable.Select()小详解排序分组分页去重穿插一下LinqDynamic利用反射建立模糊查询通用工具类穿插一下List分组DataTab......
  • SpringBoot2.x系列教程18--Web开发04之实现文件上传
    SpringBoot系列教程18--Web开发04之实现文件上传作者:一一哥一.概述文件上传是开发中比较常见的功能之一.但是SpringBoot并没有提供特别的文件上传技术,而是依赖于SpringMVC......