提交 3757271c authored 作者: lizhuo's avatar lizhuo

--no commit message

上级 5db40d38
......@@ -8,6 +8,8 @@ import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.TimeZone;
import org.apache.commons.net.ftp.FTPClient;
......@@ -27,6 +29,8 @@ import org.springframework.web.multipart.MultipartFile;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.model.file.FileInfo;
import com.zrqx.core.model.resource.ebook.Ebook;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.vo.book.EpubVo;
import com.zrqx.file.commons.Redis;
import com.zrqx.file.config.FTPConfig;
......@@ -394,60 +398,82 @@ public class FTPController {
*/
@ApiOperation(value = "文件夹解析")
@RequestMapping(value = "analysis/directory", method = RequestMethod.GET)
public String analysisDirectory(String code, String remoteDirectory) {
public CallBack<List<String>> analysisDirectory() {
this.ftpLogin();
EpubVo ev = analysisdirectory(code, remoteDirectory);
String token = ev.getEbook().getFileName();
try {
redis.set(token, ev);
} catch (IOException e) {
throw new BaseException("redis保存失败");
}
this.ftpLogOut();
return token;
}
String code = "00";
String remoteDirectory = "/book";
public EpubVo analysisdirectory(String code, String remoteDirectory) {
EpubVo ev = new EpubVo();
String pdf = "";
List<String> tokenList = new ArrayList<String>();
try {
FTPFile[] allFile = this.ftpClient.listFiles(remoteDirectory);
for (FTPFile file : allFile) {
if (!file.isDirectory()) {
if (file.getName().contains(".epub")) {
InputStream inputStream = ftpClient.retrieveFileStream(remoteDirectory + "/" + file.getName());
MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(),
"application/epub+zip", inputStream);
try {
ev = new BookUtil().getBaseInformation(rootPath, code, multipartFile);
ev.getEbook().setPath(remoteDirectory.substring(0, remoteDirectory.lastIndexOf("/")));
} catch (Exception e) {
throw new BaseException("获取基础信息失败");
Integer mark = 1;
if (file.isDirectory()) {
String strremoteDirectoryPath = remoteDirectory + "/" + file.getName();
FTPFile[] listFiles = this.ftpClient.listFiles(strremoteDirectoryPath);
for (FTPFile f : listFiles) {
if (f.getName().contains("1.scan")) {
mark = 0;
}
}
if (mark == 0) {
break;
}
EpubVo epub = new EpubVo();
EpubVo ev;
try {
ev = analysisdirectory(epub, code, strremoteDirectoryPath);
} catch (Exception e) {
throw new BaseException("解析失败");
}
tokenList.add(ev.getEbook().getFileName());
redis.set(ev.getEbook().getFileName(), ev);
inputStream.close();
ftpClient.completePendingCommand();
}
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
this.ftpLogOut();
return CallBack.success(tokenList);
}
public EpubVo analysisdirectory(EpubVo ev, String code, String remoteDirectory) throws Exception {
String pdf = "";
FTPFile[] allFile = this.ftpClient.listFiles(remoteDirectory);
for (FTPFile file : allFile) {
if (!file.isDirectory()) {
if (file.getName().contains(".epub")) {
InputStream inputStream = ftpClient.retrieveFileStream(remoteDirectory + "/" + file.getName());
MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(),
"application/epub+zip", inputStream);
try {
ev = new BookUtil().getBaseInformation(rootPath, code, multipartFile);
ev.getEbook().setPath(remoteDirectory.substring(0, remoteDirectory.lastIndexOf("/")));
} catch (Exception e) {
throw new BaseException(e);
}
if (file.getName().contains(".pdf")) {
InputStream inputStream = ftpClient.retrieveFileStream(remoteDirectory + "/" + file.getName());
MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(),
"application/pdf", inputStream);
FileInfo entity = service.uploadFile(multipartFile);
pdf = entity.getFileName();
inputStream.close();
ftpClient.completePendingCommand();
}
} else {
String strremoteDirectoryPath = remoteDirectory + "/" + file.getName();
analysisdirectory(code, strremoteDirectoryPath);
inputStream.close();
ftpClient.completePendingCommand();
}
if (file.getName().contains(".pdf")) {
InputStream inputStream = ftpClient.retrieveFileStream(remoteDirectory + "/" + file.getName());
MultipartFile multipartFile = new MockMultipartFile(file.getName(), file.getName(),
"application/pdf", inputStream);
FileInfo entity = service.uploadFile(multipartFile);
pdf = entity.getFileName();
inputStream.close();
ftpClient.completePendingCommand();
ev.getEbook().setPdfFile(pdf);
}
} else {
String strremoteDirectoryPath = remoteDirectory + "/" + file.getName();
ev = analysisdirectory(ev, code, strremoteDirectoryPath);
}
ev.getEbook().setPdfFile(pdf);
} catch (IOException e) {
throw new BaseException("文件夹解析失败");
}
return ev;
}
}
......@@ -46,6 +46,7 @@ import org.springframework.web.multipart.MultipartFile;
import com.zrqx.core.exception.BaseException;
import com.zrqx.core.form.file.CreatreQRCodeForm;
import com.zrqx.core.model.file.FileInfo;
import com.zrqx.core.util.CallBack;
import com.zrqx.core.util.PageInfo;
import com.zrqx.core.util.PageParam;
import com.zrqx.core.util.QrCodeCreateUtil;
......@@ -76,29 +77,32 @@ public class FileController {
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String uploadImg(@RequestParam("file") MultipartFile file) {
FileInfo entity = service.uploadFile(file);
if(!service.insert(entity)){
if (!service.insert(entity)) {
throw new BaseException("上传失败!");
}
return entity.getFileName();
}
@ApiOperation(value = "生成二维码 返回唯一标识")
@RequestMapping(value = "/upload/qrcode", method = RequestMethod.POST)
public String createImg(@RequestBody CreatreQRCodeForm form) {
FileInfo entity = service.createFile(form);
if(!service.insert(entity)){
if (!service.insert(entity)) {
throw new BaseException("上传失败!");
}
return entity.getFileName();
}
@ApiOperation(value = "文件上传 返回文件详细信息")
@RequestMapping(value = "/upload/info", method = RequestMethod.POST)
public FileInfo upload(@RequestParam("file") MultipartFile file) {
FileInfo entity = service.uploadFile(file);
if(!service.insert(entity)){
if (!service.insert(entity)) {
throw new BaseException("上传失败!");
}
return entity;
}
// 处理文件上传
@ApiOperation(value = "文件上传 视频")
@RequestMapping(value = "/upload/video", method = RequestMethod.POST)
......@@ -115,7 +119,7 @@ public class FileController {
} catch (Exception e) {
throw new BaseException("无法获取视频时长!");
}
if(!service.insert(entity)){
if (!service.insert(entity)) {
throw new BaseException("上传失败!");
}
return entity;
......@@ -124,8 +128,8 @@ public class FileController {
@ApiOperation(value = "文件下载")
@RequestMapping(value = "/download/{fileName}", method = RequestMethod.GET)
public String downLoad(HttpServletRequest request, HttpServletResponse response, @PathVariable String fileName) {
File file = new File(rootPath+fileName);
logger.info(rootPath+fileName);
File file = new File(rootPath + fileName);
logger.info(rootPath + fileName);
FileInfo entity = new FileInfo();
if (!file.exists()) {
entity.setFileName(fileName);
......@@ -179,19 +183,22 @@ public class FileController {
DownloadUtil.start(response, f, fileName);
}
}
@ApiOperation(value = "生成二维码zip")
@RequestMapping(value = "/download/zip", method = RequestMethod.POST)
public String downLoad(HttpServletResponse response,@RequestBody List<String> fileNames) throws Exception {
public String downLoad(HttpServletResponse response, @RequestBody List<String> fileNames) throws Exception {
service.createCriteria().andIn("fileName", fileNames);
List<FileInfo> list = service.selectByCriteria();
return ZipUtil.zip(rootPath, list);
}
@ApiOperation(value = "导出二维码zip")
@RequestMapping(value = "/download/zip", method = RequestMethod.GET)
public String downLoad(HttpServletResponse response,String fileName) throws Exception {
public String downLoad(HttpServletResponse response, String fileName) throws Exception {
DownloadUtil.start(response, fileName, "二维码.zip");
return null;
}
// 合并、验证分片方法
@ApiOperation(value = "合并、验证分片方法")
@RequestMapping(value = "/mergeOrCheckChunks", method = RequestMethod.POST)
......@@ -542,4 +549,13 @@ public class FileController {
}
return service.queryAll(pageParam);
}
@ApiOperation(value = "删除文件")
@GetMapping("/delete")
public CallBack<Boolean> deleteFile(String token) {
FileInfo entity = new FileInfo();
entity.setFileName(token);
Boolean mark = service.delete(entity);
return CallBack.success(mark);
}
}
......@@ -76,6 +76,8 @@ public class BookUtil {
book.setKeywords(epubUtil.getBookTitle());
// 保存封面
book.setCover(epubUtil.getCover().getHref());
book.setUploadTime(new Date());
book.setStatus(0);
ev.setBook(book);
/**
* 保存电子书相关内容
......
......@@ -29,7 +29,7 @@ spring:
maxFileSize: 2000Mb
maxRequestSize: 2000Mb
redis:
host: 192.168.2.230
host: 192.168.2.231
port: 6379
password: 123456
timeout: 3000 # 连接超时时间 单位 ms(毫秒)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论