资源简介
Netty+H5实现实时进度条文件上传,支持断点续传。
1、WebSocketServer:服务启动类
2、服务启动后,浏览器访问http://localhost:9999
3、FileWebSocketFrameHandler类SERVER_SAVE_PATH常量为文件上传保存路经

代码片段和文件信息
/**
* Created on 2018年7月20日 by caiming
*/
package com.netty.fileupload.handler;
import java.io.File;
import java.io.RandomAccessFile;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.ChannelFutureListener;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.DefaultFileRegion;
import io.netty.channel.SimpleChannelInboundHandler;
import io.netty.channel.group.ChannelGroup;
import io.netty.handler.codec.http.DefaultFullHttpResponse;
import io.netty.handler.codec.http.DefaultHttpResponse;
import io.netty.handler.codec.http.FullHttpResponse;
import io.netty.handler.codec.http.HttpHeaderNames;
import io.netty.handler.codec.http.HttpHeaderValues;
import io.netty.handler.codec.http.HttpRequest;
import io.netty.handler.codec.http.HttpResponse;
import io.netty.handler.codec.http.HttpResponseStatus;
import io.netty.handler.codec.http.HttpUtil;
import io.netty.handler.codec.http.HttpVersion;
import io.netty.handler.codec.http.LastHttpContent;
import io.netty.handler.codec.http.websocketx.BinaryWebSocketframe;
import io.netty.handler.codec.http.websocketx.CloseWebSocketframe;
import io.netty.handler.codec.http.websocketx.TextWebSocketframe;
import io.netty.handler.codec.http.websocketx.WebSocketframe;
import io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker;
import io.netty.handler.ssl.SslHandler;
import io.netty.handler.stream.ChunkedNioFile;
/**
* @title
* @Description
* @author caiming
* @version 1.0
* @修改记录
* @修改序号,修改日期,修改人,修改内容
*/
public class FileWebSocketframeHandler extends SimpleChannelInboundHandlerject> {
//文件上传路经
private final static String SERVER_SAVE_PATH = “D:/“;
private static final String WEBSOCKET_PATH = “/ws“;
private final ChannelGroup group;
private WebSocketServerHandshaker handshaker;
private String fileName = “test“;
private static final File INDEX;
static {
URL location = HTTPRequestHandler.class.getProtectionDomain().getCodeSource().getLocation();// 当前class的绝对路径
String path;
try {
path = location.toURI() + “index.html“;
path = !path.contains(“file:“) ? path : path.substring(5);
INDEX = new File(path);
} catch (URISyntaxException e) {
throw new IllegalStateException(“Unable to locate index.html“ e);
}
}
public FileWebSocketframeHandler(ChannelGroup group) {
this.group = group;
}
private void handleHttpRequest(ChannelHandlerContext ctx HttpRequest req) throws Exception {
// 100-continue 是用于客户端在发送 post 数据给服务器时,征询服务器情况,看服务器是否处理 post
// 的数据,如果不处理,客户端则不上传 post 是数据,反之则上传。在实际应用中,通过 post 上传大数据时,才会使用到
// 100-continue 协议。
if (HttpUtil.is100ContinueExpected(req)) {
send100Continue(ctx);
}
RandomAccessFile file = new RandomAccessFile(INDEX “r“);
HttpResponse response = new DefaultHttpResponse(req.protocolVersion() HttpResponseStatus.OK);
response.headers().set(HttpHeaderNames.CONTENT_TYPE “text/h
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-07-23 00:51 FileUpload\
文件 1397 2018-07-23 00:51 FileUpload\.classpath
文件 527 2018-07-23 00:52 FileUpload\pom.xm
文件 539 2018-07-23 00:51 FileUpload\.project
目录 0 2018-07-23 00:51 FileUpload\target\
目录 0 2018-07-23 00:51 FileUpload\.settings\
文件 238 2018-07-23 00:51 FileUpload\.settings\org.eclipse.jdt.core.prefs
文件 86 2018-07-23 00:51 FileUpload\.settings\org.eclipse.m2e.core.prefs
目录 0 2018-07-23 00:51 FileUpload\src\
目录 0 2018-07-23 00:51 FileUpload\target\test-classes\
目录 0 2018-07-23 00:55 FileUpload\target\classes\
文件 4339 2018-07-23 00:55 FileUpload\target\classes\index.html
目录 0 2018-07-23 00:51 FileUpload\src\test\
目录 0 2018-07-23 00:51 FileUpload\src\main\
目录 0 2018-07-23 00:53 FileUpload\target\classes\com\
目录 0 2018-07-23 00:51 FileUpload\src\test\resources\
目录 0 2018-07-23 00:51 FileUpload\src\test\java\
目录 0 2018-07-23 00:55 FileUpload\src\main\resources\
文件 4339 2018-07-20 06:16 FileUpload\src\main\resources\index.html
目录 0 2018-07-23 00:53 FileUpload\src\main\java\
目录 0 2018-07-23 00:53 FileUpload\target\classes\com\netty\
目录 0 2018-07-23 00:53 FileUpload\src\main\java\com\
目录 0 2018-07-23 00:53 FileUpload\target\classes\com\netty\fileupload\
目录 0 2018-07-23 00:53 FileUpload\src\main\java\com\netty\
目录 0 2018-07-23 00:56 FileUpload\target\classes\com\netty\fileupload\server\
文件 710 2018-07-23 00:56 FileUpload\target\classes\com\netty\fileupload\server\WebSocketServer$1.class
文件 1614 2018-07-23 00:55 FileUpload\target\classes\com\netty\fileupload\server\WebSocketServerInitializer.class
文件 3268 2018-07-23 00:56 FileUpload\target\classes\com\netty\fileupload\server\WebSocketServer.class
目录 0 2018-07-23 00:54 FileUpload\target\classes\com\netty\fileupload\handler\
文件 4122 2018-07-23 00:54 FileUpload\target\classes\com\netty\fileupload\handler\TextWebSocketfr
文件 5972 2018-07-23 00:54 FileUpload\target\classes\com\netty\fileupload\handler\HTTPRequestHandler.class
............此处省略9个文件信息
- 上一篇:全国县区级经纬度EXCEL表
- 下一篇:EP2C5T144开发板原理图
相关资源
- SpringBoot+H2+mybatis-plus59130
- 登录注册界面.zip48872
- 数字华容道
- SSM+Shiro+redis实现单点登陆
- jstl-api-1.2和jstl-impl-1.2
- 基于MVC模式的会员管理系统
- 国内一家大型软件公司内部的正规软
- 仿windows记事本
- GUI银行管理系统
- 超市收银系统eclipse access大学课程设计
- 模拟ATM柜员机系统--连接数据库
- A*算法的2D演示(带源码)
- 代码审查表和代码审查实例
- 仿126 网易 163 邮箱 界面
- Tomcat6.x
- 简单的行编辑器
- 扫雷(MVC架构)
- 302 Found
- window ping命令加时间并记录日志
- springboot+rabbitmq项目demo(亲测可正常运
- jxbrowser 所有版本通用的破解包
- 2017年-传智播客-张志君老师-SpringBoo
- Blob.js+Export2Excel.js
- 机会路由源代码+仿真工具(SCORP)
- POI中文帮助文档附带api手册.zip
- 2018双十一阿里供应链服务平台讲座
- 原银在线信贷平台概要设计说明书v
- office_word_api 开发文档
- sun.misc.Unsafe源码
- 精通并发与Netty 涉及到的代码
评论
共有 条评论