解决应用模块不能上传图片的bug
This commit is contained in:
@@ -351,7 +351,7 @@
|
|||||||
url = '/app/add';
|
url = '/app/add';
|
||||||
$("#Icon").empty();//清除上传控件数据
|
$("#Icon").empty();//清除上传控件数据
|
||||||
$(".fileUploadContent").initUpload({
|
$(".fileUploadContent").initUpload({
|
||||||
"uploadUrl": "/app/uploadImg.action",//上传文件信息地址
|
"uploadUrl": "/app/uploadImg",//上传文件信息地址
|
||||||
"progressUrl": "#",//获取进度信息地址,可选,注意需要返回的data格式如下({bytesRead: 102516060, contentLength: 102516060, items: 1, percent: 100, startTime: 1489223136317, useTime: 2767})
|
"progressUrl": "#",//获取进度信息地址,可选,注意需要返回的data格式如下({bytesRead: 102516060, contentLength: 102516060, items: 1, percent: 100, startTime: 1489223136317, useTime: 2767})
|
||||||
//"showSummerProgress":false,//总进度条,默认限制
|
//"showSummerProgress":false,//总进度条,默认限制
|
||||||
//"size":350,//文件大小限制,单位kb,默认不限制
|
//"size":350,//文件大小限制,单位kb,默认不限制
|
||||||
@@ -370,6 +370,9 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var infoObj = $("#appFM").serializeObject();
|
var infoObj = $("#appFM").serializeObject();
|
||||||
|
if($("#Icon .fileItem .fileName").length){
|
||||||
|
infoObj.Icon = $.trim($("#Icon .fileItem .fileName").text());
|
||||||
|
}
|
||||||
infoObj.ReSize = $("#ReSize").is(':checked');
|
infoObj.ReSize = $("#ReSize").is(':checked');
|
||||||
infoObj.OpenMax = $("#OpenMax").is(':checked');
|
infoObj.OpenMax = $("#OpenMax").is(':checked');
|
||||||
infoObj.Flash = $("#Flash").is(':checked');
|
infoObj.Flash = $("#Flash").is(':checked');
|
||||||
@@ -378,7 +381,6 @@
|
|||||||
url: url,
|
url: url,
|
||||||
type: "post",
|
type: "post",
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
fileElementId: 'Icon',
|
|
||||||
data: ({
|
data: ({
|
||||||
info: JSON.stringify(infoObj)
|
info: JSON.stringify(infoObj)
|
||||||
}),
|
}),
|
||||||
|
|||||||
@@ -5,13 +5,18 @@ import com.alibaba.fastjson.JSONObject;
|
|||||||
import com.jsh.erp.datasource.entities.App;
|
import com.jsh.erp.datasource.entities.App;
|
||||||
import com.jsh.erp.service.app.AppService;
|
import com.jsh.erp.service.app.AppService;
|
||||||
import com.jsh.erp.service.userBusiness.UserBusinessService;
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.io.*;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author ji_sheng_hua 752*718*920
|
* @author ji_sheng_hua 752*718*920
|
||||||
@@ -116,4 +121,38 @@ public class AppController {
|
|||||||
}
|
}
|
||||||
return arr;
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
334
src/main/java/com/jsh/erp/utils/FileUtils.java
Normal file
334
src/main/java/com/jsh/erp/utils/FileUtils.java
Normal file
@@ -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<String> listFile(String folderPath){
|
||||||
|
List<String> fileList = new ArrayList<String>(); //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<String> fileList = new ArrayList<String>();
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user