当前位置: 首页 > news >正文

黄山新洲建设集团网站网站的策划和建设

黄山新洲建设集团网站,网站的策划和建设,好乐买的网站推广方式,中国建筑协会官网证件查询一、简介 随着互联网的快速发展#xff0c;大文件的传输成为了互联网应用的重要组成部分。然而#xff0c;由于网络不稳定等因素的影响#xff0c;大文件的传输经常会出现中断的情况#xff0c;这时需要重新传输#xff0c;导致传输效率低下。 为了解决这个问题#xff…一、简介 随着互联网的快速发展大文件的传输成为了互联网应用的重要组成部分。然而由于网络不稳定等因素的影响大文件的传输经常会出现中断的情况这时需要重新传输导致传输效率低下。 为了解决这个问题可以实现大文件的断点续传功能。断点续传功能可以在传输中断后继续传输而不需要从头开始传输。这样可以大大提高传输的效率。 Spring Boot是一个快速开发的Java Web开发框架可以帮助我们快速搭建一个Web应用程序。在Spring Boot中我们可以很容易地实现大文件的断点续传功能。 本文将介绍如何使用Spring Boot实现大文件的断点续传功能。 二、Spring Boot实现大文件断点续传的原理 实现大文件的断点续传功能需要在客户端和服务端都进行相应的实现。 客户端需要实现以下功能 建立连接客户端需要连接服务端并建立连接。分块传输文件客户端需要将文件分成若干块并逐块传输。在传输中每个块传输完成后需要将已传输的位置发送给服务端以便服务端记录传输位置。计算MD5值在传输完成后客户端需要计算文件的MD5值以确保传输的完整性。与服务端比较MD5值在计算出MD5值后客户端需要将MD5值发送给服务端并与服务端返回的MD5值比较以确保传输的完整性。 服务端需要实现以下功能 建立连接服务端需要等待客户端连接并建立连接。接收文件服务端需要接收客户端传输的文件。在接收文件时需要记录传输的位置并在传输中断后继续接收文件。计算MD5值在接收完成后服务端需要计算文件的MD5值以确保传输的完整性。返回MD5值在计算出MD5值后服务端需要将MD5值返回给客户端。 三、Spring Boot实现大文件断点续传的步骤 1.创建Spring Boot项目 首先我们需要创建一个Spring Boot项目。可以使用Spring Initializr创建一个基本的Spring Boot项目也可以使用Maven或Gradle手动创建一个Spring Boot项目。 2.编写客户端代码 在客户端中我们需要实现以下功能 建立连接使用Java的Socket类建立与服务端的连接。分块传输文件将文件分成若干块并逐块传输。在传输中每个块传输完成后需要将已传输的位置发送给服务端以便服务端记录传输位置。计算MD5值在传输完成后计算文件的MD5值以确保传输的完整性。与服务端比较MD5值将MD5值发送给服务端并与服务端返回的MD5值比较以确保传输的完整性。 以下是客户端代码的实现 RestController RequestMapping(/file) public class FileController {PostMapping(/upload)public ResponseEntity? uploadFile(RequestParam(file) MultipartFile file,RequestParam(fileName) String fileName,RequestParam(startPosition) long startPosition) {try {// 建立连接Socket socket new Socket(localhost, 8080);OutputStream outputStream socket.getOutputStream();ObjectOutputStream objectOutputStream new ObjectOutputStream(outputStream);// 分块传输文件FileInputStream fileInputStream (FileInputStream) file.getInputStream();fileInputStream.skip(startPosition);byte[] buffer new byte[1024];int len;while ((len fileInputStream.read(buffer)) ! -1) {outputStream.write(buffer, 0, len);}// 计算MD5值fileInputStream.getChannel().position(0);String md5 DigestUtils.md5Hex(fileInputStream);// 与服务端比较MD5值InputStream inputStream socket.getInputStream();ObjectInputStream objectInputStream new ObjectInputStream(inputStream);String serverMd5 (String) objectInputStream.readObject();if (!md5.equals(serverMd5)) {throw new RuntimeException(MD5值不匹配);}// 关闭连接objectOutputStream.close();outputStream.close();socket.close();} catch (Exception e) {e.printStackTrace();return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());}return ResponseEntity.ok().build();} }3.编写服务端代码 在服务端中我们需要实现以下功能 建立连接使用Java的ServerSocket类等待客户端连接并建立连接。接收文件接收客户端传输的文件。在接收文件时需要记录传输的位置并在传输中断后继续接收文件。计算MD5值在接收完成后计算文件的MD5值以确保传输的完整性。返回MD5值将MD5值返回给客户端。 以下是服务端代码的实现 RestController RequestMapping(/file) public class FileController {private final String FILE_PATH /tmp/upload/;PostMapping(/upload)public ResponseEntity? uploadFile(HttpServletRequest request,RequestParam(fileName) String fileName) {try {// 建立连接ServerSocket serverSocket new ServerSocket(8080);Socket socket serverSocket.accept();InputStream inputStream socket.getInputStream();ObjectInputStream objectInputStream new ObjectInputStream(inputStream);// 接收文件String filePath FILE_PATH fileName;RandomAccessFile randomAccessFile new RandomAccessFile(filePath, rw);long startPosition randomAccessFile.length();randomAccessFile.seek(startPosition);byte[] buffer new byte[1024];int len;while ((len inputStream.read(buffer)) ! -1) { randomAccessFile.write(buffer, 0, len);} // 计算MD5值FileInputStream fileInputStream new FileInputStream(filePath);String md5 DigestUtils.md5Hex(fileInputStream);// 返回MD5值OutputStream outputStream socket.getOutputStream();ObjectOutputStream objectOutputStream new ObjectOutputStream(outputStream);objectOutputStream.writeObject(md5);// 关闭连接objectInputStream.close();inputStream.close();randomAccessFile.close();socket.close();serverSocket.close();} catch (Exception e) {e.printStackTrace();return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());}return ResponseEntity.ok().build(); } } 4. 编写前端代码 在前端中我们需要实现以下功能 选择文件提供一个文件选择框让用户选择要上传的文件。分块上传将文件分块上传到服务器。在上传过程中需要记录上传的位置并在上传中断后继续上传。 以下是前端代码的实现 html headmeta charsetUTF-8titleSpring Boot File Upload/titlescript srchttps://cdn.bootcss.com/jquery/3.3.1/jquery.min.js/script /head bodyinput typefile idfile button onclickupload()Upload/buttonscriptvar file;var startPosition 0;$(#file).on(change, function () {file this.files[0];});function upload() {if (!file) {alert(Please select a file!);return;}var formData new FormData();formData.append(file, file);formData.append(fileName, file.name);formData.append(startPosition, startPosition);$.ajax({url: /file/upload,type: post,data: formData,cache: false,processData: false,contentType: false,success: function () {alert(Upload completed!);},error: function (xhr) {alert(xhr.responseText);},xhr: function () {var xhr $.ajaxSettings.xhr();xhr.upload.onprogress function (e) {if (e.lengthComputable) {var percent e.loaded / e.total * 100;console.log(Upload percent: percent.toFixed(2) %);}};return xhr;}});} /script/body /html 总结 本文介绍了如何使用Spring Boot实现大文件断点续传。在实现中我们使用了Java的RandomAccessFile类来实现文件的分块上传和断点续传使用了Spring Boot的RestController注解来实现Web服务的开发使用了jQuery的Ajax函数来实现前端页面的开发。 在实际开发中需要注意以下几点 上传文件的大小和分块的大小需要根据实际情况进行设置以确保上传速度和服务器的稳定性。在上传过程中需要对异常情况进行处理以确保程序的健壮性。在上传完成后需要对上传的文件进行校验以确保传输的完整性。
http://www.hkea.cn/news/14546141/

相关文章:

  • logo是黑色 怎么调网站的色调建筑设计方案
  • 如何设置网站描述一个完整的网站怎么做
  • wordpress建站属于前端广东品牌设计公司有哪些
  • 网站建设的第三方平台如何做招聘网站的数据分析
  • 瑞安市网站建设高县网站建设
  • 制作网页时若要使链接目标在新窗口中打开则应用选择搜索引擎排名优化是什么意思
  • 柴沟堡网站建设网站修改影响做百度竞价吗
  • 企业做网站需要什么郑州市做网站的
  • 临平房产做网站的公司小红书内容营销
  • 网站建设清理自查报告某企业电子商务网站建设
  • 临沂做网站首选wordpress 可道云
  • 万网域名注册网站黄页官网
  • 潍坊高密网站建设广告设计公司起名字
  • 选手机网站wordpress角色
  • wordpress付费会员网站seo优化如何做
  • 男学网站开发电商网站建设与运维需要的软件
  • 网站如何换域名深圳seo优化seo关键词
  • 公司网站建设成都安徽省六安市建设工程信息网
  • seo网站推广多少钱百度怎么提交网站地图
  • 有哪些做室内设计好用的网站做网站要备案吗 要几天
  • 加强门户网站建设 信息公开用python网站开发
  • wordpress入门建站教程二企业开发软件公司拓展方案
  • 石家庄好用的招聘网站网站使用自己的服务器
  • 深圳专业营销网站设计专业做网站产品上架的有吗
  • 房地产交易网站模版wordpress订阅地址
  • 流行的网站设计风格关键词排名优化公司哪家好
  • 湘潭做网站的公司金融软件网站建设公司排名
  • 怎么优化网站内容免费自助制作永久网站
  • 网站建设域名所有权做电影网站危险吗
  • 徐州市建设局交易网站做母婴产品的网站