diff --git a/erp_web/pages/manage/app.html b/erp_web/pages/manage/app.html index f254e044..25e235c4 100644 --- a/erp_web/pages/manage/app.html +++ b/erp_web/pages/manage/app.html @@ -351,7 +351,7 @@ url = '/app/add'; $("#Icon").empty();//清除上传控件数据 $(".fileUploadContent").initUpload({ - "uploadUrl": "/app/uploadImg.action",//上传文件信息地址 + "uploadUrl": "/app/uploadImg",//上传文件信息地址 "progressUrl": "#",//获取进度信息地址,可选,注意需要返回的data格式如下({bytesRead: 102516060, contentLength: 102516060, items: 1, percent: 100, startTime: 1489223136317, useTime: 2767}) //"showSummerProgress":false,//总进度条,默认限制 //"size":350,//文件大小限制,单位kb,默认不限制 @@ -370,6 +370,9 @@ return; } var infoObj = $("#appFM").serializeObject(); + if($("#Icon .fileItem .fileName").length){ + infoObj.Icon = $.trim($("#Icon .fileItem .fileName").text()); + } infoObj.ReSize = $("#ReSize").is(':checked'); infoObj.OpenMax = $("#OpenMax").is(':checked'); infoObj.Flash = $("#Flash").is(':checked'); @@ -378,7 +381,6 @@ url: url, type: "post", dataType: "json", - fileElementId: 'Icon', data: ({ info: JSON.stringify(infoObj) }), diff --git a/src/main/java/com/jsh/erp/controller/AppController.java b/src/main/java/com/jsh/erp/controller/AppController.java index 8806830b..14f02ce3 100644 --- a/src/main/java/com/jsh/erp/controller/AppController.java +++ b/src/main/java/com/jsh/erp/controller/AppController.java @@ -5,13 +5,18 @@ import com.alibaba.fastjson.JSONObject; import com.jsh.erp.datasource.entities.App; import com.jsh.erp.service.app.AppService; import com.jsh.erp.service.userBusiness.UserBusinessService; +import com.jsh.erp.utils.BaseResponseInfo; +import com.jsh.erp.utils.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.io.*; import java.util.List; +import java.util.Properties; /** * @author ji_sheng_hua 752*718*920 @@ -116,4 +121,38 @@ public class AppController { } return arr; } + + /** + * 上传图片 + * @param fileInfo + * @param request + */ + @PostMapping(value = "/uploadImg") + public BaseResponseInfo uploadImg(MultipartFile fileInfo, @RequestParam("fileInfoName") String fileName, + HttpServletRequest request) { + BaseResponseInfo res = new BaseResponseInfo(); + try { + if (fileInfo != null) { + String basePath = request.getSession().getServletContext().getRealPath("/"); //默认windows文件路径,linux环境下生成的目录与项目同级,而不是下级 + String path = basePath + "upload/images/deskIcon/"; //windows环境下的路径 + Properties pro = System.getProperties(); + String osName = pro.getProperty("os.name");//获得当前操作系统的名称 + if("Linux".equals(osName) || "linux".equals(osName) || "LINUX".equals(osName)){ + path = basePath + "/upload/images/deskIcon/"; //linux环境下的路径 + } + FileUtils.SaveFileFromInputStream(fileInfo.getInputStream(), path, fileName); + res.code = 200; + res.data = "上传图片成功"; + } + } catch (FileNotFoundException e) { + e.printStackTrace(); + res.code = 500; + res.data = "获取图片失败"; + } catch (IOException e) { + e.printStackTrace(); + res.code = 500; + res.data = "上传图片失败"; + } + return res; + } } diff --git a/src/main/java/com/jsh/erp/utils/FileUtils.java b/src/main/java/com/jsh/erp/utils/FileUtils.java new file mode 100644 index 00000000..c574873c --- /dev/null +++ b/src/main/java/com/jsh/erp/utils/FileUtils.java @@ -0,0 +1,334 @@ +package com.jsh.erp.utils; + +import com.alibaba.druid.util.StringUtils; + +import java.io.*; +import java.util.*; + +/** + * + * 文件处理工具类 + * + */ +public class FileUtils { + + /** + * 功 能: 创建文件夹 + * + * @param path + * 参 数:要创建的文件夹名称 + * @return 返回值: 如果成功true;否则false 如:FileUtils.mkdir("/usr/apps/upload/"); + */ + public static boolean makedir(String path) { + File file = new File(path); + if (!file.exists()) + return file.mkdirs(); + else + return true; + } + + /** + * 保存文件 + * + * @param stream + * @param path + * 存放路径 + * @param filename + * 文件名 + * @throws IOException + */ + public static void SaveFileFromInputStream(InputStream stream, String path, String filename) + throws IOException { + File file = new File(path); + boolean flag=true; + if(!file.exists()){ + flag=file.mkdirs(); + } + if(flag){ + FileOutputStream fs = new FileOutputStream(new File(path+filename)); + byte[] buffer = new byte[1024 * 1024]; + int byteread = 0; + while ((byteread = stream.read(buffer)) != -1) { + fs.write(buffer, 0, byteread); + fs.flush(); + } + fs.close(); + stream.close(); + } + } + + + /** + * 列出某个目录下的所有文件,子目录不列出 + * @param folderPath:文件夹路径 + * @return + */ + public static List listFile(String folderPath){ + List fileList = new ArrayList(); //FileViewer.getListFiles(destPath, null, false); + File f = new File(folderPath); + File[] t = f.listFiles(); + for(int i = 0; i < t.length; i++){ + fileList.add(t[i].getAbsolutePath()); + } + return fileList; + } + + + /** + * 判断文件是否存在 + * + * @param fileName + * @return + */ + public static boolean exists(String fileName) { + File file = new File(fileName); + if (file.exists()) { + return true; + } else { + return false; + } + } + + /** + * 取当前路径 + * + * @return + */ + public static String getCurrentPath() { + File directory = new File("."); + String nowPath = ""; + try { + nowPath = directory.getCanonicalFile().toString(); + } catch (IOException e) { + e.printStackTrace(); + } + return nowPath; + } + + /** + * 获取文件扩展名 + * + * @param fileName + * @return + * */ + public static String getFileExtendName(String fileName) { + if (fileName == null) { + return ""; + } else { + return fileName.substring(fileName.lastIndexOf(".") + 1, fileName + .length()); + } + } + + /** + * 创建一个新文件,如果存在则报错 + * + * @param filePath + * @param fileName + * @return + */ + public static void createFile(String filePath, String fileName) + throws RuntimeException { + String file = null; + if (filePath == null) { + file = fileName; + } else { + file = filePath + File.separator + fileName; + } + createFile(file); + } + + /** + * 创建一个新文件(含路径),如果存在则报错 + * + * @param fileName + * 含有路径的文件名 + * @return + */ + public static void createFile(String fileName) throws RuntimeException { + File f = new File(fileName); + if (f.exists()) { + throw new RuntimeException("FILE_EXIST_ERROR"); + } else { + try { + File fileFolder = f.getParentFile(); + if (!fileFolder.exists()) + fileFolder.mkdirs(); + f.createNewFile(); + } catch (IOException ie) { + System.out.println("文件" + fileName + "创建失败:" + ie.getMessage()); + throw new RuntimeException("FILE_CREATE_ERROR"); + } + } + } + + + /** + * 创建目录,如果存在则不创建 + * + * @param path + * @return 返回结果null则创建成功,否则返回的是错误信息 + * @return + */ + public static String createDir(String path, boolean isCreateSubPah) { + String msg = null; + File dir = new File(path); + + if (dir == null) { + msg = "不能创建空目录"; + return msg; + } + if (dir.isFile()) { + msg = "已有同名文件存在"; + return msg; + } + if (!dir.exists()) { + if (isCreateSubPah && !dir.mkdirs()) { + msg = "目录创建失败,原因不明"; + } else if (!dir.mkdir()) { + msg = "目录创建失败,原因不明"; + } + } + return msg; + } + + /** + * 删除指定目录或文件。 如果要删除是目录,同时删除子目录下所有的文件 + * + * @file:File 目录 + * */ + public static void delFileOrFolder(String fileName) { + if (!exists(fileName)) + return; + File file = new File(fileName); + delFileOrFolder(file); + } + + /** + * 删除指定目录或文件。 如果要删除是目录,同时删除子目录下所有的文件 + * + * @file:File 目录 + * */ + public static void delFileOrFolder(File file) { + if (!file.exists()) + return; + if (file.isFile()) { + file.delete(); + } else { + File[] sub = file.listFiles(); + if (sub == null || sub.length <= 0) { + file.delete(); + } else { + for (int i = 0; i < sub.length; i++) { + delFileOrFolder(sub[i]); + } + file.delete(); + } + } + } + + /** + * 从Properties格式配置文件中获取所有参数并保存到HashMap中。 + * 配置中的key值即map表中的key值,如果配置文件保存时用的中文,则返回结果也会转成中文。 + * + * @param file + * @return + * @throws IOException + */ + @SuppressWarnings("unchecked") + public static HashMap readPropertyFile(String file, String charsetName) throws IOException { + if (charsetName==null || charsetName.trim().length()==0){ + charsetName="gbk"; + } + HashMap map = new HashMap(); + InputStream is =null; + if(file.startsWith("file:")) + is=new FileInputStream(new File(file.substring(5))); + else + is=FileUtils.class.getClassLoader().getResourceAsStream(file); + Properties properties = new Properties(); + properties.load(is); + Enumeration en = properties.propertyNames(); + while (en.hasMoreElements()) { + String key = (String) en.nextElement(); + String code = new String(properties.getProperty(key).getBytes( + "ISO-8859-1"), charsetName); + map.put(key, code); + } + return map; + } + /** + * + * @param path + * 文件路径 + * @param suffix + * 后缀名 + * @param isdepth + * 是否遍历子目录 + * @return + */ + @SuppressWarnings("unchecked") + public static List getListFiles(String path, String suffix, boolean isdepth) { + File file = new File(path); + return FileUtils.listFile(file, suffix, isdepth); + } + + /** + * @param f + * @param suffix:后缀名 + * @param isdepth:是否遍历子目录 + * @return + */ + @SuppressWarnings("unchecked") + public static List listFile(File f, String suffix, boolean isdepth) { + // 是目录,同时需要遍历子目录 + List fileList = new ArrayList(); + if (f.isDirectory() && isdepth == true) { + File[] t = f.listFiles(); + for (int i = 0; i < t.length; i++) { + listFile(t[i], suffix, isdepth); + } + } else { + String filePath = f.getAbsolutePath(); + + if (suffix != null) { + int begIndex = filePath.lastIndexOf(".");// 最后一个.(即后缀名前面的.)的索引 + String tempsuffix = ""; + + if (begIndex != -1)// 防止是文件但却没有后缀名结束的文件 + { + tempsuffix = filePath.substring(begIndex + 1, filePath + .length()); + } + + if (tempsuffix.equals(suffix)) { + fileList.add(filePath); + } + } else { + // 后缀名为null则为所有文件 + fileList.add(filePath); + } + + } + + return fileList; + } + + /** + * 方法追加文件:使用FileWriter + * + * @param fileName + * @param content + */ + public static void appendMethod(String fileName, String content) { + try { + // 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件 + FileWriter writer = new FileWriter(fileName, true); + writer.write(content + "\r\n"); + writer.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + +}