Nginx大文件(百M以上)的上传下载实现技术

摘要:
您还可以使用ajax向后端发送请求。1.通过表单表<formid=“postForm”action=“${pageContext.request.contextPath}/UploadServlet”method=“post”enctype=“multipart/form-data”>

javaweb上传文件

上传文件的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中已经帮我们封闭好了

Nginx大文件(百M以上)的上传下载实现技术第1张

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

Nginx大文件(百M以上)的上传下载实现技术第2张

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请求通知服务端进行初始化操作

Nginx大文件(百M以上)的上传下载实现技术第3张

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

Nginx大文件(百M以上)的上传下载实现技术第4张

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

Nginx大文件(百M以上)的上传下载实现技术第5张

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

            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部分

文件初始化的逻辑

Nginx大文件(百M以上)的上传下载实现技术第6张

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

Nginx大文件(百M以上)的上传下载实现技术第7张

注:

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

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

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

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

后端代码逻辑大部分是相同的,目前能够支持MySQL,Oracle,SQL。在使用前需要配置一下数据库,可以参考我写的这篇文章:http://blog.ncmem.com/wordpress/2019/08/12/java-http%E5%A4%A7%E6%96%87%E4%BB%B6%E6%96%AD%E7%82%B9%E7%BB%AD%E4%BC%A0%E4%B8%8A%E4%BC%A0/

欢迎入群一起讨论:374992201

免责声明:文章转载自《Nginx大文件(百M以上)的上传下载实现技术》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python 把数据 json格式输出HTML条件注释判断&amp;lt;!--[if IE] ![endif]--&amp;gt;下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WinDbg调试分析 asp.net站点 CPU100%问题

 公司为了节省成本,最近有一批服务器降了配置,CPU从8核降到了2核。本身是小站点,访问量也不高,CPU总是会飙到100%而且可以一直持续几个小时,直接强制结束进程可以维持几个小时,几个小时后又一样,运维那边总是受到cpu的警告短信很是苦恼,按理来说就算降低了配置也不至于会让CPU一直100%。    以下就分享本次使用 WinDbg 找出 CPU 100...

Log4j乱码

解决方法: 如果是log4j.properties为配置文件,比如: 1 2 3 [c-sharp] view plaincopy log4j.appender.A1=org.apache.log4j.RollingFileAppender   log4j.appender.A1.File=all.log 加入一行: 1 2 3 4 [...

dotnet 获取程序所在路径的方法

在 dotnet 有很多方法可以获取当前程序所在的路径,但是这些方法获取到的路径有一点不相同,特别是在工作路径不是当前的程序所在的路径的时候 通过下面几个方法都可以拿到程序所在的文件夹或程序文件 AppDomain.CurrentDomain.BaseDirectory 当前程序域寻找 dll 的文件夹 Environment.CurrentDirect...

STM32学习笔记(1)——搭建库函数工程

好吧,现在开始学习STM32了,顺便把这个过程记录下来,Keil安装之类就不说了,先用Keil搭建一个工程。 我是参照这篇文章开始的:《零死角玩转stm32-初级篇(终结篇)》 开始的时候我完全按照文章介绍的方式一步一步搭建的,下面我再自己搭建一下: 1、先获取STM32的库函数开发包。   貌似现在最新版本的firmware还是3.5版本的。   在这里...

vue-cli3使用less全局变量,不用每个组件引入less文件(亲测有效)

问题: 在global.less文件中定义一些全局使用的less变量; 结果组件使用这些全局变量时,都要@import "~@/styles/global.less"引入该文件,否则报错 解决方法和步骤 1. 安装style-resources-loader yarn add style-resources-loader 2. 在vue.config.j...

FFmpeg命令集锦

一、FFmpeg命令集举例 1. 视频格式转换(其实格式转换说法不太准确,但大家都这么叫,准确的说,应该是视频容器转换) 比如一个avi文件,想转为mp4,或者一个mp4想转为ts。 我目测这个已经能满足很多人的需求了。 ffmpeg -i input.avi output.mp4 ffmpeg -i input.mp4 output.ts 2.获取视频...