/**
* 类描述:文件上传/下载工具类
*
* @author NHH
* @date 2016年7月4日
*
*/
public class FileUpAndDownUtil {
/**
* 方法描述:上传文件
*
* @author NHH
* @date 2016年7月4日
* @param myfile
* @param fileName
* @param request
* @return
* @throws Exception
*/
public static String upload(InputStream inputStream, String fileName, HttpServletRequest request)throws Exception{
//得到服务器上的文件夹路径
String path = request.getSession().getServletContext().getRealPath("") + "\\upload\\";
//通过文件输出流,将文件保存到服务的upload路径上
FileOutputStream fos = new FileOutputStream(path + fileName);
byte[] bytes = new byte[1024];
int readByteLength = inputStream.read(bytes);
while(readByteLength != -1){
fos.write(bytes, 0, readByteLength);
readByteLength = inputStream.read(bytes);
}
fos.close();
inputStream.close();
return fileName;
}
/**
* 方法描述:下载文件
*
* @author NHH
* @date 2016年7月4日
* @param filePath
* @param request
* @param response
* @return
* @throws Exception
*/
public static void download(String filePath, HttpServletRequest request, HttpServletResponse response) throws Exception{
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
OutputStream fos = null;
InputStream fis = null;
try {
// 如果是从服务器上取就用这个获得系统的绝对路径方法。
String fileAllPath = request.getSession().getServletContext().getRealPath(filePath);
File uploadFile = new File(fileAllPath);
fis = new FileInputStream(uploadFile);
bis = new BufferedInputStream(fis);
fos = response.getOutputStream();
bos = new BufferedOutputStream(fos);
//得到文件名
String filename = fileAllPath.substring(fileAllPath.lastIndexOf("\\") + 1);
// 这个就就是弹出下载对话框的关键代码
response.setHeader("Content-disposition", "attachment;filename="+ URLEncoder.encode(filename, "utf-8"));
int bytesRead = 0;
// 用输出流去写,缓冲输入输出流
byte[] buffer = new byte[8192];
while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
e.printStackTrace();
} finally {
try {
if (bos != null) {
bos.flush();
}
if (fis != null) {
fis.close();
}
if (bis != null) {
bis.close();
}
if (fos != null) {
fos.close();
}
if (bos != null) {
bos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
* 类描述:文件上传/下载工具类
*
* @author NHH
* @date 2016年7月4日
*
*/
public class FileUpAndDownUtil {
/**
* 方法描述:上传文件
*
* @author NHH
* @date 2016年7月4日
* @param myfile
* @param fileName
* @param request
* @return
* @throws Exception
*/
public static String upload(InputStream inputStream, String fileName, HttpServletRequest request)throws Exception{
//得到服务器上的文件夹路径
String path = request.getSession().getServletContext().getRealPath("") + "\\upload\\";
//通过文件输出流,将文件保存到服务的upload路径上
FileOutputStream fos = new FileOutputStream(path + fileName);
byte[] bytes = new byte[1024];
int readByteLength = inputStream.read(bytes);
while(readByteLength != -1){
fos.write(bytes, 0, readByteLength);
readByteLength = inputStream.read(bytes);
}
fos.close();
inputStream.close();
return fileName;
}
/**
* 方法描述:下载文件
*
* @author NHH
* @date 2016年7月4日
* @param filePath
* @param request
* @param response
* @return
* @throws Exception
*/
public static void download(String filePath, HttpServletRequest request, HttpServletResponse response) throws Exception{
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
OutputStream fos = null;
InputStream fis = null;
try {
// 如果是从服务器上取就用这个获得系统的绝对路径方法。
String fileAllPath = request.getSession().getServletContext().getRealPath(filePath);
File uploadFile = new File(fileAllPath);
fis = new FileInputStream(uploadFile);
bis = new BufferedInputStream(fis);
fos = response.getOutputStream();
bos = new BufferedOutputStream(fos);
//得到文件名
String filename = fileAllPath.substring(fileAllPath.lastIndexOf("\\") + 1);
// 这个就就是弹出下载对话框的关键代码
response.setHeader("Content-disposition", "attachment;filename="+ URLEncoder.encode(filename, "utf-8"));
int bytesRead = 0;
// 用输出流去写,缓冲输入输出流
byte[] buffer = new byte[8192];
while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
e.printStackTrace();
} finally {
try {
if (bos != null) {
bos.flush();
}
if (fis != null) {
fis.close();
}
if (bis != null) {
bis.close();
}
if (fos != null) {
fos.close();
}
if (bos != null) {
bos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}