123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- package com.fjs.scenic.controller;
- import java.io.*;
- import java.net.SocketException;
- import javax.annotation.PostConstruct;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpSession;
- import com.fasterxml.jackson.annotation.ObjectIdGenerators;
- import org.apache.tomcat.util.http.fileupload.FileUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.util.Assert;
- import org.springframework.util.StringUtils;
- import org.springframework.web.bind.annotation.DeleteMapping;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.context.request.RequestContextHolder;
- import org.springframework.web.context.request.ServletRequestAttributes;
- import org.springframework.web.multipart.MultipartFile;
- import com.fjs.scenic.upload.FileUtil;
- import com.fjs.scenic.utils.Cons;
- import com.fjs.scenic.utils.Data;
- import com.fjs.scenic.utils.FtpFileUtil;
- import com.fjs.scenic.utils.ImgeNameUtils;
- import com.fjs.scenic.utils.ReturnResult;
- /**
- * @author 作者 :yangya
- * @version 创建时间:2018年3月29日 下午2:10:36 类说明:
- */
- @RestController
- @RequestMapping("/upload")
- public class UploadPicController {
- @Value("${FTP_ADDRESS}")
- private String ftpAddress;
- @Value("${FTP_PORT}")
- private int ftpPort;
- @Value("${FTP_USERNAME}")
- private String ftpUserName;
- @Value("${FTP_PASSWORD}")
- private String ftpPassword;
- @Value("${FTP_BASEPATH}")
- private String ftpBasePath;
- @Value("${FTP_VOID_BASEPATH}")
- private String ftpVoidBasePath;
- @Value("${NGINX_PORT}")
- private String nginxPort;
-
- @Autowired
- private FileUtil fileUtil;
- @PostConstruct
- public void init() {
- FtpFileUtil.FTP_ADDRESS = this.ftpAddress;
- FtpFileUtil.FTP_PORT = this.ftpPort;
- FtpFileUtil.FTP_USERNAME = this.ftpUserName;
- FtpFileUtil.FTP_PASSWORD = this.ftpPassword;
- FtpFileUtil.FTP_BASEPATH = this.ftpBasePath;
- FtpFileUtil.FTP_VOID_BASEPATH = this.ftpVoidBasePath;
- FtpFileUtil.NGINX_PORT = this.nginxPort;
- }
- /**
- * 上传图片
- */
- @PostMapping("/pic")
- public ReturnResult uploadImg(@RequestParam("upload") MultipartFile file) throws IOException {
- try {
- String uploadFile = fileUtil.uploadFile(file);
- return ReturnResult.ok(new Data(uploadFile, ""));
- } catch (Exception e) {
- e.printStackTrace();
- return ReturnResult.error("上传失败");
- }
- // return upload(file);
- }
- /**
- * 上传视频
- */
- @PostMapping("/void")
- public ReturnResult uploadVoid(@RequestParam("upload") MultipartFile file, HttpSession session,String sessionID) throws IOException {
- // ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- // HttpServletRequest request = servletRequestAttributes.getRequest();
- return ReturnResult.ok(FtpFileUtil.uploadFile(file, session,sessionID));
- }
- /**
- * 获取进度
- */
- @PostMapping("/getProcess")
- public ReturnResult getProcess(HttpSession session,String sessionID) throws IOException {
- String process = (String) session.getAttribute(sessionID);
- System.out.println(process);
- if(process==null){
- return ReturnResult.ok(0);
- }else if (process.equals("100")) {
- session.removeAttribute(sessionID);
- return ReturnResult.ok(100);
- } else {
- return ReturnResult.ok(process);
- }
- }
- /**
- * 上传
- *
- * @param file 上传文件
- * @param isVoid 是否是上传视频
- * @return
- * @throws IOException
- */
- public ReturnResult upload(MultipartFile file, boolean isVoid) throws IOException {
- String fileName = file.getOriginalFilename();
- String newName = ImgeNameUtils.genImageName();
- // 新名字
- newName = newName + fileName.substring(fileName.lastIndexOf("."));
- InputStream inputStream = file.getInputStream();
- String picUrl = isVoid ? FtpFileUtil.uploadVoidFile(newName, inputStream) : FtpFileUtil.uploadFile(newName, inputStream);
- if (!StringUtils.isEmpty(picUrl)) {
- return ReturnResult.ok(new Data(picUrl, ""));
- } else {
- return ReturnResult.build(Cons.RESULT_ERR, "上传失败");
- }
- }
- /**
- * 上传图片
- *
- * @param file
- * @return
- * @throws IOException
- */
- public ReturnResult upload(MultipartFile file) throws IOException {
- return upload(file, false);
- }
- /**
- * 上传图片
- */
- @PostMapping("/data")
- public ReturnResult uploadData(@RequestParam("fileData") MultipartFile file, String fileName) throws IOException {
- Assert.notNull(fileName, "manager-文件后缀名不能为空.");
- // 新名字
- String newName = ImgeNameUtils.genImageName();
- newName = newName + fileName.substring(fileName.lastIndexOf("."));
- InputStream inputStream = file.getInputStream();
- String picUrl = FtpFileUtil.uploadFile(newName, inputStream);
- if (!StringUtils.isEmpty(picUrl)) {
- return ReturnResult.ok(new Data(picUrl, ""));
- } else {
- return ReturnResult.build(Cons.RESULT_ERR, "上传失败");
- }
- }
- /**
- * 删除图片
- */
- @DeleteMapping("/delete/{fileName}/{fix}")
- public @ResponseBody
- ReturnResult refundList(@PathVariable String fileName, @PathVariable String fix) {
- Assert.notNull(fileName, "文件名不能为空.");
- Assert.notNull(fix, "文件格式后缀不能为空.");
- fileName = fileName + "." + fix;
- return new ReturnResult(Cons.RESULT_OK, "请求成功", FtpFileUtil.deleteFile(fileName));
- }
- /**
- * 下载视频到本地
- *
- * @param fileName 文件名称
- * @return 文件相对地址
- */
- @PostMapping("/downVoid")
- public ReturnResult downVoid(String fileName) {
- if (fileName == null) {
- return ReturnResult.build(500, "文件名不能爲空");
- }
- fileName = fileName.substring(fileName.lastIndexOf('/') + 1);
- char seq = File.separatorChar;
- //判断文件是否已存在
- String picPath = "fjs-scenic-manager" + seq + "src" + seq + "main" + seq + "resources" + seq + "static" + seq + "void" + seq;
- File pic = new File(picPath + fileName);
- File pic1 = new File("fjs-scenic-manager");
- if (!pic.exists()) {
- try {
- FileUtils.cleanDirectory(new File(picPath));
- pic.createNewFile();
- FtpFileUtil.downloadFtpVoidFile(picPath, fileName);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return ReturnResult.ok("../../void/" + fileName);
- }
- }
|