
已解决问题
谷歌psjxyqjxk用户在2013.02.20提交了关于“一点资讯webuploader分片上传的实现代码(前后端分离)”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-24T08:20:49。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,谢了,下次有事儿别忘了找我 !
详细问题描述及疑问:期待您的答案,谢了,下次有事儿别忘了找我 !
本文介绍了webuploader分片上传的
WebUploader是由Bai**WebFE(FEX)团队开发的一个简单的以h**
功能描述
1、webuplo
2、前端使用官网的上传图片demo,在此基础上代码
3、分片上传已做
4、后端用springboot做框架搭建。springMVC做rest服务,开启跨域访问。
5、容器用springboot内置的tomcat插件,运行Application的main方法
显示效果
关键代码前端
WebUploader.Up后端
importj**a.io.File;importj**a.io.IOException;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.stereotype.Service;importorg.springframework.web.multipart.MultipartFile;importcom.bear.upload.util.FileUtil;importcom.bear.upload.util.RETURN;importcom.bear.upload.vo.CheckMd5FileVO;importcom.bear.upload.vo.UploadVO;@ServicepublicclassChunkUploadService{privatestaticLoggerLOG=LoggerFactory.getLogger(ChunkUploadService.class);@Value("${file.upload.path}")privateStringUPLOAD_PATh**;privatestaticfinalStringDelimiter="-";/***上传之前校验(整个文件、分片)**@parammd5FileVO*@return*/publicObjectcheck(CheckMd5FileVOmd5FileVO){Integertype=md5FileVO.getType();Longchunk=md5FileVO.getChunk();StringfileName=md5FileVO.getFileName();LongfileSize=md5FileVO.getFileSize();if(type==0){//未分片校验StringdestfilePath=UPLOAD_PATh**+File.separator+fileName;FiledestFile=newFile(destfilePath);if(destFile.exists()&&destFile.length()==fileSize){returnRETURN.success("文件已存在,跳过",1);}else{returnRETURN.success("文件不存在",0);}}else{//分片校验StringfileMd5=md5FileVO.getFileMd5();StringdestFileDir=UPLOAD_PATh**+File.separator+fileMd5;StringdestFileName=chunk+Delimiter+fileName;StringdestFilePath=destFileDir+File.separator+destFileName;FiledestFile=newFile(destFilePath);if(destFile.exists()&&destFile.length()==fileSize){returnRETURN.success("分片已存在,跳过",1);}else{returnRETURN.success("分片不存在",0);}}}/***文件上传**@paramfile*@paramuploadVO*@paramappVersion*@return*/publicObjectupload(MultipartFilefile,UploadVOuploadVO){Longchunk=uploadVO.getChunk();if(chunk==**ll){//没有分片returnUnChunkUpload(file,uploadVO);}else{//分片returnChunkUpload(file,uploadVO);}}/***分片上传**@paramfile*@paramuploadVO*@paramappVersion*@return*/publicObjectChunkUpload(MultipartFilefile,UploadVOuploadVO){StringfileName=uploadVO.getName();StringfileMd5=uploadVO.getFileMd5();Longchunk=uploadVO.getChunk();//当前片Longchunks=uploadVO.getChunks();//总**多少片//分片目录创建StringchunkDirPath=UPLOAD_PATh**+File.separator+fileMd5;FilechunkDir=newFile(chunkDirPath);if(!chunkDir.exists()){chunkDir.mkdirs();}//分片文件上传StringchunkFileName=chunk+Delimiter+fileName;StringchunkFilePath=chunkDir+File.separator+chunkFileName;FilechunkFile=newFile(chunkFilePath);try{file.transferTo(chunkFile);}catch(Exceptione){LOG.error("分片上传出错",e);return***.fail("分片上传出错",1);}//合并分片LongchunkSize=uploadVO.getChunkSize();longseek=chunkSize*chunk;StringdestFilePath=UPLOAD_PATh**+File.separator+fileName;FiledestFile=newFile(destFilePath);if(chunkFile.length()>0){try{FileUtil.randomAccessFile(chunkFile,destFile,seek);}catch(IOExceptione){LOG.error("分片{}合并失败:{}",chunkFile.getName(),e.getMessage());return***.fail("分片合并失败",1);}}if(chunk==chunks-1){//删除分片文件夹FileUtil.deleteDirectory(chunkDirPath);returnRETURN.success("上传成功",1);}else{return***.fail("上传中",1);}}/***未分片上传**@paramfile*@paramuploadVO*@paramappVersion*@return*/publicObjectUnChunkUpload(MultipartFilefile,UploadVOuploadVO){StringfileName=uploadVO.getName();//StringfileMd5=uploadVO.getFileMd5();//文件上传FiledestFile=newFile(UPLOAD_PATh**+File.separator+fileName);if(file!=**ll&&!file.isEmpty()){//上传目录FilefileDir=newFile(UPLOAD_PATh**);if(!fileDir.exists()){fileDir.mkdirs();}if(destFile.exists()){destFile.delete();}try{file.transferTo(destFile);returnRETURN.success("上传成功",0);}catch(Exceptione){LOG.error("文件上传出错",e);return***.fail("文件上传出错",0);}}return***.fail("上传失败",0);}}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:Vue2.0结合webuploader实现文件分片上传功能使用WebUploader实现分片断点上传文件功能(二)webuploader在springMVC+jquery+J**a开发环境下的大文件分片上传的实例代码jQuerywebuploader分片上传大文件