使用原生Java Web来实现大文件的上传

本文介绍了如何使用Java原生Web技术处理大文件上传,特别是分块上传、秒传和断点续传功能。项目依赖包括JDK8、Tomcat8和Apache的fileupload及codec库。前端利用webuploader进行分块操作,后端通过nio处理文件读写,并通过md5校验文件。在并发环境下,使用ConcurrentHashMap确保数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

BigFileUpload

wen icon

目录

背景介绍

这个项目是在朋友的一次面试中,面试人提出了一个问题.
我有一个100M的文件,然后我的宽带只有10M,我应该如何处理用户上传的文件?
根据这个问题,我小试牛刀,写了这个项目.

期间查阅了资料,借鉴了Fourwen的项目的前端框架和md写法.

再次感谢.

项目介绍

项目采用如下:

  • 上层: Java, JDK8, Tomcat8,
  • 服务端: Jsp, 原生
  • 前端: webuploader, bootstrap, jquery

来进行开发,

针对文件的上传,一般可以考虑的功能点有

断点续传 在断网或者在暂停的情况下,能够在上传断点中继续上传。

分块上传 也是断点续传的基础之一,把大文件通过前端分块,然后后台在组在一起。

文件秒传 服务中已经有人上传过文件,其他人再上传这个文件直接记录并放回成功。

其他功能 下面这些功能归类到其他,是因为它们基本都是通过WebUploader来实现的,很简单。

- 多线程上传 多个线程上传不同的块文件。 
- 文件进度显示 显示文件的上传完成情况。 

使用说明

获取代码

不会经常更新,下一步会做一个集合公司内部网址的项目.

需要知识点

  • 项目使用nio来进行文件的读取和创建
  • 使用原生web来开发,不使用任何框架
  • 使用Apache提供的fileupload来实现上传数据的获取
  • 使用Apache提供的codec来实现md5加密
  • 并发的理解

启动项目

项目示范

功能分析

分块上传可以说是我们整个项目的基础,像断点续传、暂停这些都是需要用到分块。
分块这块相对来说比较简单。前端是采用了webuploader,分块等基础功能已经封装起来,使用方便。
借助webUpload提供给我们的文件API,前端就显得异常简单。

   var uploader = WebUploader.create({

        // swf文件路径
        swf: '${ctx}/webuploader-0.1.5/Uploader.swf',

        // 文件接收服务端。
        server: '${ctx}/upload.do',
        //文件上传请求的参数表,每次发送都会发送此对象中的参数
        formData: {
            md5: ''
        },

        // 选择文件的按钮。可选。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值