整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

C#.NET 超大文件上传和断点续传的实现

#.NET 超大文件上传和断点续传的实现,SpringMVC批量大文件上传下载,SpringCloud批量大文件上传下载,SpringBoot批量大文件上传下载,jsp批量大文件上传下载,java批量大文件上传下载,vue批量大文件上传下载,input file批量大文件上传下载,dom批量大文件上传下载,html5批量大文件上传下载,php批量大文件上传下载,百度webuploader批量大文件上传下载,webuploader批量大文件上传下载,前端批量大文件上传下载,web批量大文件上传下载,.NET 批量大文件上传下载解决方案,.NET mvc批量大文件上传下载,.NET core批量大文件上传下载,c#.NET 批量大文件上传下载,asp.NET 批量大文件上传下载,.NET 批量大文件上传下载,

后端用了asp.net,c#.net,csharp,.net core,.net mvc。客户需求是需要在前端,WEB页面中实现文件夹的上传和下载功能,前端用了WebForm,vue2,vue3,html5,客户是政府单位,经常要传文件夹。

网上搜了一圈,几乎全部都是用HTML5来实现的,找了一些文章看了一下,几乎全部都只提到了上传的实现,借助于HTML5的API,也就是chrome提供的一个特殊的API,几乎全部都没提到下载,下载基本上的方案也都是打包,但是我们这边的情况有点特殊,用户传的文件夹也不小,一般都有几百几千个文件吧,文件有大有小,有的是1G,有的是10G,这样的话,文件夹一共就有50G左右了

在服务器上打包的话,首先慢,其实占服务器资源,主要是占存储空间,而且垃圾清理机制做的不好的话,服务器硬盘空间很快就满了。

然后就是用户下载的体验不是特别好,下载的话,一次性下载不完,需要支持断点续传,用户下载一部分后要下班了,明天需要继续下载。这些都是痛点,HTML5和chrome提供的这个特殊的API还是不太能够满足用户的需求。还是需要进行定制开发。

研发部门的同事用Windows,macOS这两个终端操作系统多一些,后端运维同事用linux系统多一些,主要也就是centos和ubuntu,客户那边的话,我们主要是针对国企和政府,所以信创国产化的终端系统多一些,比如龙芯,中标麒麟,华为鲲鹏,银河麒麟,统信UOS都有。这些都要兼容。

主要的一点就是技术支持,后续的产品更新和维护服务要做好,领导很重视这一块,主要是客户那边是要求提供这类服务,领导的意思是要求能够提供产品所有完整源代码,包含前后端源代码,控件源代码,也就是希望能够自主可控吧,因为有军工类的客户,一是有源码审查的要求,二是有定制开发的要求,需要做针对性的开发,没有源码的话自主性就差点,如果是用的百度webuploader就不要投标了,这个是不符合规定的。我们之前也用过这个,稳定性差,可扩展性差,而且也没有技术支持,不能够提供技术支持,他是基于flash和html5开发的,不能够兼容IE,我们有客户用了IE,我们的系统能够兼容IE,不可能让用户换系统,退一步说,就算是用户换了系统,如果后面有新需求,它也不能满足,反正就是个坑。之前也用了,实际使用中发现安全性,稳定性,可扩展性都很差,所以后面还是换了。

最新版本:6.5.40

在线代码:https://gitee.com/xproer/up6-asp-net/tree/6.5.40/


NOSQL

NOSQL无需任何配置可直接访问页面进行测试

SQL

使用IIS

大文件上传测试推荐使用IIS以获取更高性能。

使用IIS Express

小文件上传测试可以使用IIS Express

创建数据库

配置数据库连接信息

访问页面进行测试

相关参考:

文件保存位置,

源码工程文档:https://drive.weixin.qq.com/s?k=ACoAYgezAAw1dWofra

源码报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwoiul8gl

OEM版报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuzp4W0a

控件源码下载:https://drive.weixin.qq.com/s?k=ACoAYgezAAwbdKCskc

Vue 作为数据驱动的前端框架,目前比较流行,因此我们公司最新的项目开发都选择 “SpringBoot 后台 + Vue 前端” 这个技术组合。如果一开始就选择这个技术组合,完全没问题。

但是,如果前端技术最初是传统的 html ,加上 Vue 后,旧的 web.xml 配置的欢迎页面为 ../index.html ,导致访问首页报错,本文来分析下这个问题。

SpringBoot + 传统 webapp

一个基于 SpringBoot 的 web 应用,工程最初选择的前端技术是 html 和 jsp 所以有 webapp 目录,且指定了 web.xml 文件:


webapps 目录下有默认首页 index.html

SpringBoot+ Vue 新组合

前端使用 Vue ,配置 vue.config.js 中 build 目录为

module.exports = {
  outputDir: './src/main/resources/static',
  publicPath: './',
  devServer: {
    port: 8080, // 端口
  },
};

maven 打包时,执行前端打包命令,完成前后台内容统一打包:

<plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>exec-npm-install</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <executable>npm</executable>
              <arguments>
                <argument>install</argument>
              </arguments>
              <workingDirectory>./</workingDirectory>
            </configuration>
          </execution>
          <execution>
            <id>exec-npm-run-build</id>
            <phase>prepare-package</phase>
            <goals>
              <goal>exec</goal>
            </goals>
            <configuration>
              <executable>npm</executable>
              <arguments>
                <argument>run</argument>
                <argument>build</argument>
              </arguments>
              <workingDirectory>./</workingDirectory>
            </configuration>
          </execution>
        </executions>

新旧叠加产生的打包问题

使用了 webapp 目录,同时又有 vue 时,打包生成的 xxx.war 包部署到 Tomcat 后,直接访问应用,由于 web.xml 中指定了路径 ../index.html,后台报错:


catalina.out 异常:

22-Nov-2020 07:36:52.993 严重 [http-nio-8080-exec-5] 
org.apache.coyote.http11.Http11Processor.service 错误的处理请求
	java.lang.IllegalArgumentException: 
	资源路径[/../index.html]已规范化为无效的[null]

首页静态文件检索路径如何

第一种,static/index.html

删掉 webapps 目录下的 index.html 和 web.xml 这两个文件后,重启应用,能正常访问到 static 目录下的 index.html 页面:

第二种,如果保留 webapp 下的 index.html 和 web.xml 文件后,SpringBoot 默认的 web.xml 配置文件失效。此时,修改自定义的 web.xml 修正路径为 index.html 去掉相对路径后,再次访问,能正常:

第三种, 编辑 web.xml 配置文件路径为 ./index.html 效果和 index.html 一样。这就会走 SpringBoot 默认的静态文件查找逻辑。

启示录

第一点,自定义的 web.xml 会覆盖掉 SpringBoot 的默认配置。

第二点,web.xml 中指定了相对路径 ./index.htmlindex.html ,相对查找顺序是先 /static ,再是 / ,所以都能成功查到首页。

第三点,web.xml 中只指定一个 welcome-file 文件 ../index.html 文件,访问报错,但是如果再随便加一行配置,就能走默认查找到 static 的文件


通过各种配置测试,发现没有办法通过自定义的 web.xml 修改 SpringBoot 的应用的首页,这点也挺让笔者捉摸不透的!

求:前端用了JSP,VUE2,VUE3,后端用了JSP,SpringBoot,IDE用了Eclipse,MyEclipse,因为新项目和老项目都用了两种IDE。

客户是一个政府单位,现要求能够在网页上面上传文件夹,文件夹里面大约有1万多个文件,有大有小,大的有1G~10G,小的有几MB,要求支持断点续传,支持进度信息离线存储,用户可能传一半没有传完,下班了,明天上班后继续上传,电脑晚上到点需要关机,支持加密传输,支持国密加密算法SM4,要求支持下载,支持非打包方式下载,浏览器要求支持包含IE在内的所有浏览器,系统环境要求支持信创国产化,比如银河麒麟,中标麒麟,统信UOS,龙芯,数据库支持MySQL,Oracle,达梦数据库,人大金仓,需要提供前端源码,后端源码,控件源码,公司自己的项目,也有自己的产品,后续需要集成使用,提供7*24小时技术支持服务,提供文档教程,视频教程,远程技术指导,1对1技术支持服务,提供手机,微信,QQ,邮箱,企业微信等联系方式。

导入项目:
导入到Eclipse:http://www.ncmem.com/doc/view.aspx?id=9da9c7c2b91b40b7b09768eeb282e647
导入到IDEA:http://www.ncmem.com/doc/view.aspx?id=9fee385dfc0742448b56679420f22162
springboot统一配置:http://www.ncmem.com/doc/view.aspx?id=7768eec9284b48e3abe08f032f554ea2

下载示例:

https://gitee.com/xproer/up6-jsp-eclipse/tree/6.5.40/

工程

NOSQL

NOSQL示例不需要任何配置,可以直接访问测试

创建数据表

选择对应的数据表脚本,这里以SQL为例

修改数据库连接信息

访问页面进行测试

文件存储路径

up6/upload/年/月/日/guid/filename

相关问题:
1.javax.servlet.http.HttpServlet错误
2.项目无法发布到tomcat
3.md5计算完毕后卡住
4.服务器找不到config.json文件

相关参考:

文件保存位置