文件的上传
private String makeFileName (String filename) {
//为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名
return UUID.randomUUID().toString() + "_" + filename;
}
//定义文件保存路径
String savePath = "/home/sxd/Downloads/wenjan";
//this.getServletContext().getRealPath("/WEB-INF/upload");
File file = new File(savePath);
//判断上传文件的保存目录是否存在 不存在就创建
if (!file.exists() && !file.isDirectory()) {
file.mkdir();
}
//消息提示
String message = "";
try{
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
List<FileItem> list = upload.parseRequest(request);
for(FileItem item : list){
if(!item.isFormField()){
String filename = item.getName();
System.out.println(filename);
if(filename==null || filename.trim().equals("")){
continue;
}
filename = filename.substring(filename.lastIndexOf("\\")+1);
String saveFilename = makeFileName(filename);
InputStream in = item.getInputStream();
FileOutputStream fout = new FileOutputStream(savePath + System.getProperty("file.separator") + saveFilename);
byte buffer[] = new byte[1024];
int len = 0;
while((len=in.read(buffer))>0){
fout.write(buffer, 0, len);
}
in.close();
fout.close();
//删除处理文件上传时生成的临时文件
item.delete();
message = "文件上传成功!";
}
}
}catch (Exception e) {
message= "文件上传失败!";
e.printStackTrace();
}
request.setAttribute("message",message);
request.getRequestDispatcher("/message.jsp").forward(request, response);
前端页面
<form action="Upload.jsp" method="post" enctype="multipart/form-data">
<span>选择文件:</span><input type="file" name="upload">
<div>
<input type="submit" value="上传文件">
</div>
</form>
response.setContentType("application/x-download");
String basePath = request.getSession().getServletContext().getRealPath("");
String fileDownloadName = "/home/sxd/Downloads/peizi.txt";
//"C:\\Users\\Administrator\\Desktop\\files\\test.txt"; // 下载的文件的物理路径+文件名
String fileDisplayName = "text.txt";// 给用户提供的下载文件名
fileDisplayName = URLEncoder.encode
(fileDisplayName, "UTF-8");
response.addHeader("Content-Disposition",
"attachment;filename=" + fileDisplayName);
OutputStream outp = null;
FileInputStream in = null;
try {
outp = response.getOutputStream();
in = new FileInputStream(fileDownloadName);
byte[] b = new byte[1024];
int i = 0;
while ((i = in.read(b)) > 0) {
outp.write(b, 0, i);
}
outp.flush();
} catch (Exception e) {
System.out.println("文件下载失败!");
e.printStackTrace();
} finally {
if (in != null) {
in.close();
in = null;
}
if (outp != null) {
outp.close();
outp = null;
out.clear();
out = pageContext.pushBody();
}
}