分片上传说明文档

前端参考代码

分片上传是前后端协同工作的,前端已经测试可用的参考代码为upload.html,请把分页上传这个文件夹考到自己的项目当中,进行集成

分片上传说明文档

后台参考代码

在前端配置好访问路径

打开upload.html找到如下配置

分片上传说明文档

结合spring mvc框架

获取前端参来的参数,请参考FileController

分片上传说明文档

上传文件页面

分片上传说明文档

/**

*

* 保存文件

*

* @param data 数据

* @param filePath 目标文件名

* @param fileSize 文件总大小

* @param chunkInfo 分块信息

* @return 完整文件保存成功时返回文件地址,否则返回null

* 注:分块上传的文件,只在所有分块均上传完时才返回文件地址

* @exception/throws [异常类型] [异常说明](可选)

* @author jiangshunyao

* @date 2017822 下午5:17:20

* @since [起始版本]

*/

public static String saveFile(byte[] data, String filePath, long fileSize, ChunkInfo chunkInfo)

{

if (chunkInfo == null)

{

throw new BBKException("分块信息不能为空");

}

 

LOGGER.info("上传分块文件:id{}, 分块号:{}, 分块总数:{}, 分块大小:{}", chunkInfo.getId(), chunkInfo.getChunkNo(),

chunkInfo.getChunkCount(), chunkInfo.getSize());

if (null == chunkInfo.getId() || "".equals(chunkInfo.getId().trim()))

{

throw new BBKException("分块信息的id不能为空chunkId:" + chunkInfo.getId());

}

 

if (!saveChunk(data, filePath, chunkInfo))

{

throw new BBKException("保存文件失败:" + filePath);

}

 

if (addChunkCounterAndCheckIfComplete(getChunkedFileId(chunkInfo.getId(), fileSize), chunkInfo.getChunkCount()))

{

File file = new File(filePath);

LOGGER.info("文件大小:{}", file.length());

LOGGER.info("保存分块数据完成:{}", filePath);

return filePath;

}

 

return null;

}

 

/** * * 保存文件 * * @param data 数据 * @param filePath 目标文件名 * @param fileSize 文件总大小 * @param chunkInfo 分块信息 * @return 完整文件保存成功时返回文件地址,否则返回null * 注:分块上传的文件,只在所有分块均上传完时才返回文件地址 * @exception/throws [异常类型] [异常说明](可选) * @author jiangshunyao * @date 2017822 下午5:17:20 * @since [起始版本] */ public static String saveFile(byte[] data, String filePath, long fileSize, ChunkInfo chunkInfo) { if (chunkInfo == null) { throw new BBKException("分块信息不能为空"); } LOGGER.info("上传分块文件:id{}, 分块号:{}, 分块总数:{}, 分块大小:{}", chunkInfo.getId(), chunkInfo.getChunkNo(), chunkInfo.getChunkCount(), chunkInfo.getSize()); if (null == chunkInfo.getId() || "".equals(chunkInfo.getId().trim())) { throw new BBKException("分块信息的id不能为空chunkId:" + chunkInfo.getId()); } if (!saveChunk(data, filePath, chunkInfo)) { throw new BBKException("保存文件失败:" + filePath); } if (addChunkCounterAndCheckIfComplete(getChunkedFileId(chunkInfo.getId(), fileSize), chunkInfo.getChunkCount())) { File file = new File(filePath); LOGGER.info("文件大小:{}", file.length()); LOGGER.info("保存分块数据完成:{}", filePath); return filePath; } return null; }