JAVAWEB–文件上传和下载

需求:后端用的是JSP,前端用了VUE2,VUE3,HTML5,现用户需要在网页上面实现大文件的上传和下载,文件大小大概为10G左右,一次性可能上传1000多个,批量上传,要求支持上传断点续传,下载断点续传,之前采用的方案是HTML5,下载也是采用的HTML5+打包方式,在实际测试中发现在服务器打包1000多个10G的文件,直接导致服务器磁盘被占满,很容易崩溃,后来加了磁盘,但是用户那边有几十个人同时下载,每个用户下载的时候都会先打包,一个用户打包时可能就占1T的磁盘空间,暂时没有好的方法。

导入项目:
导入到Eclipse:导入项目
导入到IDEA:导入项目
springboot统一配置:springboot-配置

下载示例:

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文件

相关参考:

文件保存位置

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现文件上传下载功能的关键是要能够处理HTTP请求和响应。对于文件上传功能,需要使用HTML的form表单和input标签,以及Servlet提供的HttpServletRequest对象的getPart()方法,将上传的文件转换为输入流,然后使用IO流写入服务器指定的目录。具体的实现步骤如下: 1. 在HTML页面上添加form表单和input标签,用于选择要上传的文件和提交表单。 2. 在Servlet中处理HTTP请求,获取上传的文件的输入流,并使用IO流将文件写入服务器指定目录。可以使用以下代码实现: ``` Part filePart = request.getPart("file"); // 获取上传的文件 String fileName = filePart.getSubmittedFileName(); // 获取上传的文件名 InputStream fileContent = filePart.getInputStream(); // 获取上传文件的输入流 // 将上传文件的输入流写入服务器指定目录 OutputStream outputStream = new FileOutputStream(new File("上传文件的路径" + fileName)); byte[] buffer = new byte[4096]; int bytesRead = -1; while ((bytesRead = fileContent.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } outputStream.close(); fileContent.close(); ``` 3. 对于文件下载功能,需要使用Servlet提供的HttpServletResponse对象的setContentType()方法和setHeader()方法,设置响应的内容类型和文件名,并将文件的输入流转换为输出流,写入响应中,实现文件下载。具体的实现步骤如下: ``` response.setContentType("application/octet-stream"); // 设置响应的内容类型为二进制流 response.setHeader("Content-Disposition", "attachment; filename=\"文件名\""); // 设置响应头,告诉浏览器这是一个文件下载响应,文件名为指定的文件名 // 将要下载的文件输入流转换为输出流,写入响应中 InputStream inputStream = new FileInputStream(new File("要下载的文件路径")); OutputStream outputStream = response.getOutputStream(); byte[] buffer = new byte[4096]; int bytesRead = -1; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } inputStream.close(); outputStream.close(); ``` 以上就是实现文件上传下载功能的详细思路。需要注意的是,上传的文件应存储在指定的目录中,下载的文件应先检查是否存在,不存在应返回错误提示。同时,为了保证安全性,需要对上传的文件进行类型和大小的限制,防止恶意文件上传

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值