采用springmvc架构,只贴出关键代码,其他一概论之。
上传:
jsp页面
|
1
2
3
4
5
|
<form action=
"${pageContext.request.contextPath}/UploadHandleServlet"
method=
"post"
enctype=
"multipart/form-data"
>
上传用户x:<input type=
"text"
name=
"username"
><br/>
上传文件1:<input type=
"file"
name=
"file1"
><br/>
<input type=
"submit"
value=
"提交"
>
</form>
|
后台代码
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
SimpleDateFormat sdf1 =
new
SimpleDateFormat(
"yyyyMMddHHmmss"
);
String savePath =request.getSession().getServletContext().getRealPath(
"/WEB-INF/upload"
);
File file =
new
File(savePath);
if
(!file.exists()) {
file.mkdir();
}
String message =
""
;
try
{
DiskFileItemFactory factory =
new
DiskFileItemFactory();
factory.setSizeThreshold(
1024
*
100
);
factory.setRepository(file);
ServletFileUpload upload =
new
ServletFileUpload(factory);
upload.setHeaderEncoding(
"UTF-8"
);
List<FileItem> list = upload.parseRequest(request);
//正则匹配,过滤路径取文件名
String regExp =
".+\\\\(.+)$"
;
Pattern p = Pattern.compile(regExp);
String fileName=
""
;
for
(FileItem item : list){
if
(item.isFormField()){
String name = item.getFieldName();
String value = item.getString(
"UTF-8"
);
System.out.println(name +
"="
+ value);
}
else
{
String name = item.getName();
name = name.substring(name.lastIndexOf(
"\\"
)+
1
);
fileName = savePath+
"/"
+ sdf1.format(
new
Date()) +
"_"
+name;
item.write(
new
File(fileName));
}
}
message =
"文件上传成功!"
;
}
catch
(Exception e) {
message=
"文件上传失败!"
;
e.printStackTrace();
}
|
文件下载
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
//获得文件名和文件路径
String name = map.get(
"name"
)+
""
;
String path = map.get(
"path"
)+
""
;
String filename=
new
String(name.getBytes(
"utf-8"
),
"iso8859-1"
);
File file =
new
File(path);
InputStream fis =
new
BufferedInputStream(
new
FileInputStream(path));
byte
[] buffer =
new
byte
[fis.available()];
fis.read(buffer);
fis.close();
response.reset();
response.addHeader(
"Content-Disposition"
,
"attachment;filename="
+
new
String(name.replaceAll(
" "
,
""
).getBytes(
"utf-8"
),
"iso8859-1"
));
response.addHeader(
"Content-Length"
,
""
+ file.length());
OutputStream os =
new
BufferedOutputStream(response.getOutputStream());
response.setContentType(
"application/octet-stream"
);
os.write(buffer);
// 输出文件
os.flush();
os.close();
|
本文转自布拉君君 51CTO博客,原文链接:http://blog.51cto.com/5148737/1774535
,如需转载请自行联系原作者