Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
JSH ERP
Commits
a2591362
Commit
a2591362
authored
Jan 13, 2019
by
季圣华
Browse files
解决应用模块不能上传图片的bug
parent
a4ee6af8
Changes
3
Hide whitespace changes
Inline
Side-by-side
erp_web/pages/manage/app.html
View file @
a2591362
...
...
@@ -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
)
}),
...
...
src/main/java/com/jsh/erp/controller/AppController.java
View file @
a2591362
...
...
@@ -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
;
}
}
src/main/java/com/jsh/erp/utils/FileUtils.java
0 → 100644
View file @
a2591362
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
();
}
}
}
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment