文件上传和下载
来源:互联网 发布:jquery源码分析 编辑:程序博客网 时间:2024/06/05 16:08
package com.huikao.dao.imp;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.URLEncoder;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.huikao.dao.BaseDao;
import com.huikao.dao.ITestDao;
import com.huikao.domain.Test;
import com.huikao.util.DocConverter;
/**
* 试卷类数据访问实现
* @author LeiJing
* @date 2014-11-8 18:51
* @version v1.0
*
*/
@Repository
public class TestDaoImp extends BaseDao implements ITestDao {
private static final String searchTests="com.huikao.dao.ITestDao.searchTests";//查找试卷
private static final String delete="com.huikao.dao.ITestDao.delete";//删除试卷
private static final String update="com.huikao.dao.ITestDao.update";//更新试卷全部信息
private static final String updateTest="com.huikao.dao.ITestDao.updateTest";//更新试卷的路径,上传试卷,大小
private static final String viewTestDetailes="com.huikao.dao.ITestDao.viewTestDetailes";//查看试卷详细内容
private static final String searchByDownloadTimes="com.huikao.dao.ITestDao.searchByDownloadTimes";//按照下载次数对试卷排序
private static final String insert="com.huikao.dao.ITestDao.insert";//上传试卷描述
private static final String selectBySrc="com.huikao.dao.ITestDao.selectBySrc";//根据路径查询试卷
//更新试卷下载次数
/**
* 按照下载排行查找试卷
*/
@Override
public List<Test> searchByDownloadTimes(int rows){
return super.sqlMapClientTemplate.queryForList(searchByDownloadTimes, rows);
}
/**
* 搜索试卷
*/
@Override
public List<Test> searchTests(Test test) {
// TODO Auto-generated method stub
return super.sqlMapClientTemplate.queryForList(searchTests,test);
}
private RowMapper<Test> testRowMapper = new RowMapper<Test>() {
@Override
public Test mapRow(ResultSet rs, int rowNum) throws SQLException {
Test t = new Test();
t.setId(rs.getInt("id"));
t.setCookie_times(rs.getInt("cookie_times"));
t.setDesciption(rs.getString("desciption"));
t.setUpPeople(rs.getInt("upPeople"));
t.setDownloadTimes(rs.getInt("downloadTimes"));
t.setKeywords(rs.getString("keywords"));
t.setSchoolName(rs.getString("schoolName"));
t.setMajor(rs.getString("major"));
t.setTeacher(rs.getString("teacher"));
t.setTest_src(rs.getString("test_src"));
t.setTestDate(rs.getString("testDate"));
t.setTitle(rs.getString("title"));
t.setType(rs.getString("type"));
return null;
}
};
/**
* 文件真正上传处理
* @param test
* @param request
* @param response
* @return -1 失败 or id
*/
@Override
public String upload(Test test,HttpServletRequest request,
HttpServletResponse response){
String result = "file upload error";
// 创建 DiskFileItemFactory工厂 对象
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
FileItem currentFile = null;
String uploadPath = request.getRealPath("/WEB-INF/upload"); // 上传文件的目录
String tempPath=request.getRealPath("/WEB-INF/temp"); // 临时文件目录
diskFileItemFactory.setRepository(new File(tempPath));// 设置缓冲区目录
diskFileItemFactory.setSizeThreshold(1024*1024);// 设置缓冲区大小,1M
// 创建DiskFileItemFactory的解析器对象
ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory);
List<FileItem> fileItems;
try{
fileItems = fileUpload.parseRequest(request);
for(FileItem fileItem : fileItems){//遍历文件列表
if(fileItem.isFormField()){//是普通文本域
}else{
String fileName = fileItem.getName();
if(fileName.lastIndexOf("\\") != -1){//opera浏览器返回路径信息
fileName = fileName.substring(fileName.lastIndexOf("\\")+1);//去掉路径截取文件名
}
currentFile = fileItem;
String fileType = fileName.substring(fileName.lastIndexOf('.')+1);
String storedTestSrc = test.getId()+"_"+fileName;
fileItem.write(new File(uploadPath,storedTestSrc));
// //System.out.println("fileName = "+fileName+", storedTestSrc = "+storedTestSrc);
// // 创建保存的文件
// File file = new File(uploadPath, fileName);
// // 获取请求的输入流对象
// InputStream is = fileItem.getInputStream();
// // 输出流对象
// FileOutputStream fos = new FileOutputStream(file);
// // 缓冲区大小
// byte[] buffer = new byte[1024];
// // 读取的长度
// int len = 0;
// // 读取 如果读取的结果为-1 证明读取完毕,否则继续读取
// while ((len = is.read(buffer)) != -1) {
// // 写入文件
// fos.write(buffer, 0, len);
// }
// // 关闭流的操作
// is.close();
// fos.close();
String converfileName = uploadPath.replaceAll("\\\\", "/")+"/"+storedTestSrc;
// File pdfFile = null;
// if("doc".equalsIgnoreCase(fileType)||"PPT".equalsIgnoreCase(fileType)||"XLS".equalsIgnoreCase(fileType)||"XLSX".equalsIgnoreCase(fileType)||"pptx".equalsIgnoreCase(fileType)||"XLSX".equalsIgnoreCase(fileType)||"DOCX" .equalsIgnoreCase(fileType)){
// DocConverter dc = new DocConverter(converfileName);
// pdfFile = dc.office2PDF();
//
// }
//
// if(pdfFile != null){
// test.setPdf_path(storedTestSrc.substring(0,storedTestSrc.lastIndexOf('.')+1)+"pdf");
// System.out.println("Pdf_size: "+pdfFile.length());
// test.setPdf_size(pdfFile.length());
// }
test.setUploadDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));//设置试卷上传试卷
test.setContent_type(fileType);//设置试卷类型
test.setTest_src(storedTestSrc);
test.setTest_size(fileItem.getSize()/1024);
}
}
int rs = (Integer) super.sqlMapClientTemplate.update(updateTest, test);
if(rs > 0){
result = "success";
}else{//如果更新失败,则删除记录
super.sqlMapClientTemplate.delete(delete,test.getId());
}
}catch(Exception e){
if (currentFile != null && currentFile.isInMemory()){
String name = currentFile.getName();
currentFile.delete();
System.out.println(name+"上传失败,已经删除");
}
super.sqlMapClientTemplate.delete(delete,test.getId());
}
return result;
}
/**
* 上传试卷描述
*/
@Override
public int uploadTest(Test test,HttpServletRequest request,
HttpServletResponse response) {
// TODO Auto-generated method stub
// System.out.println("imp_test: title : "+test.getTitle()+",Teacher : "+test.getTeacher());
int rs = (Integer) super.sqlMapClientTemplate.insert(insert,test);
return rs;
}
/**
* 更新试卷
*/
@Override
public String update(Test test) {
// TODO Auto-generated method stub
int rs = (Integer) super.sqlMapClientTemplate.update(update, test);
String result = null;
if(rs > 0){
result = "success";
}else{
result="error";
}
return result;
}
/**
* 删除试卷
*/
@Override
public String delete(int id) {
// TODO Auto-generated method stub
int rs = (Integer) super.sqlMapClientTemplate.delete(delete, id);
String result = null;
if(rs > 0){
result = "success";
}else{
result="error";
}
return result;
}
/**
* 获取试卷信息
*/
@Override
public Test viewTestDetailes(int id) {
// TODO Auto-generated method stub;
return (Test)super.sqlMapClientTemplate.queryForObject(viewTestDetailes,id);
}
/**
* 下载试卷说
*/
@Override
public String downloadTest(String fileName,HttpServletRequest request,HttpServletResponse response){
String result="";
System.out.println("-------------->"+fileName);
if (!"".equals(fileName)) {
try {
fileName=new String(fileName.getBytes("iso8859-1"),"UFT-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String uploadPath = request.getRealPath("/WEB-INF/upload/"); // 上传文件的目录
String path = uploadPath+"\\"+ fileName;
System.out.println(path);
File file = new File(path);
if (file.exists()) {
//System.out.println(fileName);
InputStream inputStream = null;
OutputStream outputStream = null;
// 以流的形式下载文件
try {
inputStream = new FileInputStream(file);
outputStream = response.getOutputStream();
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
inputStream.close();
// 清空response
response.reset();
// 设置response的Header
response.addHeader("Content-Disposition","attachment;fileName=" + new String(fileName.getBytes("UTF-8"),"iso8859-1"));
response.addHeader("Content-Length", "" + file.length());
response.setContentType("application/octet-stream");
outputStream.write(buffer);
outputStream.flush();
Test test = new Test();
test.setTest_src(fileName);
Test selectedtest = null;
try{
selectedtest= (Test) super.sqlMapClientTemplate.queryForObject(selectBySrc, test);
}catch(Exception ex){
result="select error ";
}
if(selectedtest != null){
int newDownLoadTimes = selectedtest.getDownloadTimes()+1;
test.setDownloadTimes(newDownLoadTimes);
test.setId(selectedtest.getId());
test.setTest_src(null);
int rs = (Integer) super.sqlMapClientTemplate.update(update, test);
if(rs > 0){
result = "download success";
}else{
result = "update table error";
}
}else{
result="record not found";
}
} catch (Exception e) {
// TODO: handle exception
}finally{
try {
inputStream.close();
outputStream.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} else {
result = "file not found";
}
} else {
result = "parameter error";
}
return result;
}
public void viewFile(String fileName,HttpServletRequest request,HttpServletResponse response){
String result="file not found";
System.out.println("-------------->"+fileName);
if (!"".equals(fileName)) {
String fileType = fileName.substring(fileName.lastIndexOf('.')+1);
System.out.println("fileType: "+fileType);
String uploadPath = request.getRealPath("/WEB-INF/upload"); // 存储文件的目录
String converfileName = uploadPath.replaceAll("\\\\", "/")+"/"+fileName;
String pdfStr ="";
String pdfPath = "";
File pdfFile = null;
if("doc".equalsIgnoreCase(fileType)||"PPT".equalsIgnoreCase(fileType)||"XLS".equalsIgnoreCase(fileType)||"XLSX".equalsIgnoreCase(fileType)||"pptx".equalsIgnoreCase(fileType)||"XLSX".equalsIgnoreCase(fileType)||"DOCX" .equalsIgnoreCase(fileType)){
pdfStr =fileName.substring(0,fileName.lastIndexOf('.')+1)+"pdf";
pdfPath = uploadPath+"\\"+ pdfStr;
if(!new File(pdfPath).exists()){
DocConverter dc = new DocConverter(converfileName);
pdfFile = dc.office2PDF();
}
fileName = pdfStr;
}
String path = uploadPath+"\\"+ fileName;
//System.out.println(path);
File file = new File(path);
if (file.exists()) {
System.out.println(fileName);
InputStream inputStream = null;
OutputStream outputStream = null;
// 以流的形式下载文件
try {
inputStream = new FileInputStream(file);
outputStream = response.getOutputStream();
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
inputStream.close();
// 清空response
response.reset();
// 设置response的Header
if("PDF" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","application/pdf");}
else if("TXT" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","text/html;charset=UTF-8");}
//
// else if("DOCX" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");}
// else if("DOC".equalsIgnoreCase(fileType)){response.setHeader("Content-type", "application/msword");}
// else if("XLS" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","application/vnd.ms-excel");}
// else if("XLSX".equalsIgnoreCase(fileType)){response.setHeader("Content-type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");}
// else if("PPT" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","application/vnd.ms-powerpoint");}
// else if("PPTX".equalsIgnoreCase(fileType)){response.setHeader("Content-type","application/vnd.openxmlformats-officedocument.presentationml.presentation");}
else if("BMP" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/bmp");}
else if("GIF" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/gif");}
else if("IEF" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/ief");}
else if("JPEG".equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/jpeg");}
else if("JPG" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/jpeg");}
else if("PNG" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/png");}
else if("TIFF".equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/tiff");}
else if("JAVA" .equalsIgnoreCase(fileType)){response.setHeader("Content-type", "java/*");}
// response.addHeader("Content-Disposition","attachment;fileName=" + fileName);//弹出下载对话框
request.setCharacterEncoding("UTF-8");
response.addHeader("Content-Length", "" + file.length());
response.addHeader("Content-Disposition","inline;filename=" + fileName);//打开文档
// response.setContentType("application/octet-stream");
outputStream.write(buffer);
outputStream.flush();
result="sucess";
} catch (Exception e) {
// TODO: handle exception
}finally{
try {
inputStream.close();
outputStream.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} else {
System.out.println("------------->file not found!!!");
}
} else {
System.out.println("------------->parameter error");
}
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.URLEncoder;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.huikao.dao.BaseDao;
import com.huikao.dao.ITestDao;
import com.huikao.domain.Test;
import com.huikao.util.DocConverter;
/**
* 试卷类数据访问实现
* @author LeiJing
* @date 2014-11-8 18:51
* @version v1.0
*
*/
@Repository
public class TestDaoImp extends BaseDao implements ITestDao {
private static final String searchTests="com.huikao.dao.ITestDao.searchTests";//查找试卷
private static final String delete="com.huikao.dao.ITestDao.delete";//删除试卷
private static final String update="com.huikao.dao.ITestDao.update";//更新试卷全部信息
private static final String updateTest="com.huikao.dao.ITestDao.updateTest";//更新试卷的路径,上传试卷,大小
private static final String viewTestDetailes="com.huikao.dao.ITestDao.viewTestDetailes";//查看试卷详细内容
private static final String searchByDownloadTimes="com.huikao.dao.ITestDao.searchByDownloadTimes";//按照下载次数对试卷排序
private static final String insert="com.huikao.dao.ITestDao.insert";//上传试卷描述
private static final String selectBySrc="com.huikao.dao.ITestDao.selectBySrc";//根据路径查询试卷
//更新试卷下载次数
/**
* 按照下载排行查找试卷
*/
@Override
public List<Test> searchByDownloadTimes(int rows){
return super.sqlMapClientTemplate.queryForList(searchByDownloadTimes, rows);
}
/**
* 搜索试卷
*/
@Override
public List<Test> searchTests(Test test) {
// TODO Auto-generated method stub
return super.sqlMapClientTemplate.queryForList(searchTests,test);
}
private RowMapper<Test> testRowMapper = new RowMapper<Test>() {
@Override
public Test mapRow(ResultSet rs, int rowNum) throws SQLException {
Test t = new Test();
t.setId(rs.getInt("id"));
t.setCookie_times(rs.getInt("cookie_times"));
t.setDesciption(rs.getString("desciption"));
t.setUpPeople(rs.getInt("upPeople"));
t.setDownloadTimes(rs.getInt("downloadTimes"));
t.setKeywords(rs.getString("keywords"));
t.setSchoolName(rs.getString("schoolName"));
t.setMajor(rs.getString("major"));
t.setTeacher(rs.getString("teacher"));
t.setTest_src(rs.getString("test_src"));
t.setTestDate(rs.getString("testDate"));
t.setTitle(rs.getString("title"));
t.setType(rs.getString("type"));
return null;
}
};
/**
* 文件真正上传处理
* @param test
* @param request
* @param response
* @return -1 失败 or id
*/
@Override
public String upload(Test test,HttpServletRequest request,
HttpServletResponse response){
String result = "file upload error";
// 创建 DiskFileItemFactory工厂 对象
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
FileItem currentFile = null;
String uploadPath = request.getRealPath("/WEB-INF/upload"); // 上传文件的目录
String tempPath=request.getRealPath("/WEB-INF/temp"); // 临时文件目录
diskFileItemFactory.setRepository(new File(tempPath));// 设置缓冲区目录
diskFileItemFactory.setSizeThreshold(1024*1024);// 设置缓冲区大小,1M
// 创建DiskFileItemFactory的解析器对象
ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory);
List<FileItem> fileItems;
try{
fileItems = fileUpload.parseRequest(request);
for(FileItem fileItem : fileItems){//遍历文件列表
if(fileItem.isFormField()){//是普通文本域
}else{
String fileName = fileItem.getName();
if(fileName.lastIndexOf("\\") != -1){//opera浏览器返回路径信息
fileName = fileName.substring(fileName.lastIndexOf("\\")+1);//去掉路径截取文件名
}
currentFile = fileItem;
String fileType = fileName.substring(fileName.lastIndexOf('.')+1);
String storedTestSrc = test.getId()+"_"+fileName;
fileItem.write(new File(uploadPath,storedTestSrc));
// //System.out.println("fileName = "+fileName+", storedTestSrc = "+storedTestSrc);
// // 创建保存的文件
// File file = new File(uploadPath, fileName);
// // 获取请求的输入流对象
// InputStream is = fileItem.getInputStream();
// // 输出流对象
// FileOutputStream fos = new FileOutputStream(file);
// // 缓冲区大小
// byte[] buffer = new byte[1024];
// // 读取的长度
// int len = 0;
// // 读取 如果读取的结果为-1 证明读取完毕,否则继续读取
// while ((len = is.read(buffer)) != -1) {
// // 写入文件
// fos.write(buffer, 0, len);
// }
// // 关闭流的操作
// is.close();
// fos.close();
String converfileName = uploadPath.replaceAll("\\\\", "/")+"/"+storedTestSrc;
// File pdfFile = null;
// if("doc".equalsIgnoreCase(fileType)||"PPT".equalsIgnoreCase(fileType)||"XLS".equalsIgnoreCase(fileType)||"XLSX".equalsIgnoreCase(fileType)||"pptx".equalsIgnoreCase(fileType)||"XLSX".equalsIgnoreCase(fileType)||"DOCX" .equalsIgnoreCase(fileType)){
// DocConverter dc = new DocConverter(converfileName);
// pdfFile = dc.office2PDF();
//
// }
//
// if(pdfFile != null){
// test.setPdf_path(storedTestSrc.substring(0,storedTestSrc.lastIndexOf('.')+1)+"pdf");
// System.out.println("Pdf_size: "+pdfFile.length());
// test.setPdf_size(pdfFile.length());
// }
test.setUploadDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));//设置试卷上传试卷
test.setContent_type(fileType);//设置试卷类型
test.setTest_src(storedTestSrc);
test.setTest_size(fileItem.getSize()/1024);
}
}
int rs = (Integer) super.sqlMapClientTemplate.update(updateTest, test);
if(rs > 0){
result = "success";
}else{//如果更新失败,则删除记录
super.sqlMapClientTemplate.delete(delete,test.getId());
}
}catch(Exception e){
if (currentFile != null && currentFile.isInMemory()){
String name = currentFile.getName();
currentFile.delete();
System.out.println(name+"上传失败,已经删除");
}
super.sqlMapClientTemplate.delete(delete,test.getId());
}
return result;
}
/**
* 上传试卷描述
*/
@Override
public int uploadTest(Test test,HttpServletRequest request,
HttpServletResponse response) {
// TODO Auto-generated method stub
// System.out.println("imp_test: title : "+test.getTitle()+",Teacher : "+test.getTeacher());
int rs = (Integer) super.sqlMapClientTemplate.insert(insert,test);
return rs;
}
/**
* 更新试卷
*/
@Override
public String update(Test test) {
// TODO Auto-generated method stub
int rs = (Integer) super.sqlMapClientTemplate.update(update, test);
String result = null;
if(rs > 0){
result = "success";
}else{
result="error";
}
return result;
}
/**
* 删除试卷
*/
@Override
public String delete(int id) {
// TODO Auto-generated method stub
int rs = (Integer) super.sqlMapClientTemplate.delete(delete, id);
String result = null;
if(rs > 0){
result = "success";
}else{
result="error";
}
return result;
}
/**
* 获取试卷信息
*/
@Override
public Test viewTestDetailes(int id) {
// TODO Auto-generated method stub;
return (Test)super.sqlMapClientTemplate.queryForObject(viewTestDetailes,id);
}
/**
* 下载试卷说
*/
@Override
public String downloadTest(String fileName,HttpServletRequest request,HttpServletResponse response){
String result="";
System.out.println("-------------->"+fileName);
if (!"".equals(fileName)) {
try {
fileName=new String(fileName.getBytes("iso8859-1"),"UFT-8");
} catch (UnsupportedEncodingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String uploadPath = request.getRealPath("/WEB-INF/upload/"); // 上传文件的目录
String path = uploadPath+"\\"+ fileName;
System.out.println(path);
File file = new File(path);
if (file.exists()) {
//System.out.println(fileName);
InputStream inputStream = null;
OutputStream outputStream = null;
// 以流的形式下载文件
try {
inputStream = new FileInputStream(file);
outputStream = response.getOutputStream();
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
inputStream.close();
// 清空response
response.reset();
// 设置response的Header
response.addHeader("Content-Disposition","attachment;fileName=" + new String(fileName.getBytes("UTF-8"),"iso8859-1"));
response.addHeader("Content-Length", "" + file.length());
response.setContentType("application/octet-stream");
outputStream.write(buffer);
outputStream.flush();
Test test = new Test();
test.setTest_src(fileName);
Test selectedtest = null;
try{
selectedtest= (Test) super.sqlMapClientTemplate.queryForObject(selectBySrc, test);
}catch(Exception ex){
result="select error ";
}
if(selectedtest != null){
int newDownLoadTimes = selectedtest.getDownloadTimes()+1;
test.setDownloadTimes(newDownLoadTimes);
test.setId(selectedtest.getId());
test.setTest_src(null);
int rs = (Integer) super.sqlMapClientTemplate.update(update, test);
if(rs > 0){
result = "download success";
}else{
result = "update table error";
}
}else{
result="record not found";
}
} catch (Exception e) {
// TODO: handle exception
}finally{
try {
inputStream.close();
outputStream.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} else {
result = "file not found";
}
} else {
result = "parameter error";
}
return result;
}
public void viewFile(String fileName,HttpServletRequest request,HttpServletResponse response){
String result="file not found";
System.out.println("-------------->"+fileName);
if (!"".equals(fileName)) {
String fileType = fileName.substring(fileName.lastIndexOf('.')+1);
System.out.println("fileType: "+fileType);
String uploadPath = request.getRealPath("/WEB-INF/upload"); // 存储文件的目录
String converfileName = uploadPath.replaceAll("\\\\", "/")+"/"+fileName;
String pdfStr ="";
String pdfPath = "";
File pdfFile = null;
if("doc".equalsIgnoreCase(fileType)||"PPT".equalsIgnoreCase(fileType)||"XLS".equalsIgnoreCase(fileType)||"XLSX".equalsIgnoreCase(fileType)||"pptx".equalsIgnoreCase(fileType)||"XLSX".equalsIgnoreCase(fileType)||"DOCX" .equalsIgnoreCase(fileType)){
pdfStr =fileName.substring(0,fileName.lastIndexOf('.')+1)+"pdf";
pdfPath = uploadPath+"\\"+ pdfStr;
if(!new File(pdfPath).exists()){
DocConverter dc = new DocConverter(converfileName);
pdfFile = dc.office2PDF();
}
fileName = pdfStr;
}
String path = uploadPath+"\\"+ fileName;
//System.out.println(path);
File file = new File(path);
if (file.exists()) {
System.out.println(fileName);
InputStream inputStream = null;
OutputStream outputStream = null;
// 以流的形式下载文件
try {
inputStream = new FileInputStream(file);
outputStream = response.getOutputStream();
byte[] buffer = new byte[inputStream.available()];
inputStream.read(buffer);
inputStream.close();
// 清空response
response.reset();
// 设置response的Header
if("PDF" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","application/pdf");}
else if("TXT" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","text/html;charset=UTF-8");}
//
// else if("DOCX" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","application/vnd.openxmlformats-officedocument.wordprocessingml.document");}
// else if("DOC".equalsIgnoreCase(fileType)){response.setHeader("Content-type", "application/msword");}
// else if("XLS" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","application/vnd.ms-excel");}
// else if("XLSX".equalsIgnoreCase(fileType)){response.setHeader("Content-type","application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");}
// else if("PPT" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","application/vnd.ms-powerpoint");}
// else if("PPTX".equalsIgnoreCase(fileType)){response.setHeader("Content-type","application/vnd.openxmlformats-officedocument.presentationml.presentation");}
else if("BMP" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/bmp");}
else if("GIF" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/gif");}
else if("IEF" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/ief");}
else if("JPEG".equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/jpeg");}
else if("JPG" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/jpeg");}
else if("PNG" .equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/png");}
else if("TIFF".equalsIgnoreCase(fileType)){response.setHeader("Content-type","image/tiff");}
else if("JAVA" .equalsIgnoreCase(fileType)){response.setHeader("Content-type", "java/*");}
// response.addHeader("Content-Disposition","attachment;fileName=" + fileName);//弹出下载对话框
request.setCharacterEncoding("UTF-8");
response.addHeader("Content-Length", "" + file.length());
response.addHeader("Content-Disposition","inline;filename=" + fileName);//打开文档
// response.setContentType("application/octet-stream");
outputStream.write(buffer);
outputStream.flush();
result="sucess";
} catch (Exception e) {
// TODO: handle exception
}finally{
try {
inputStream.close();
outputStream.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} else {
System.out.println("------------->file not found!!!");
}
} else {
System.out.println("------------->parameter error");
}
}
}
0 0
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- 文件上传和下载
- J2EE开发---验证码(一)
- Android Studio;Gradle:unable to delete file
- 几何画板中无穷大是怎样应用的
- 自动化测试书籍
- perl 回调必须是函数引用
- 文件上传和下载
- 线程和进程
- Android ORM 框架之 greenDAO 使用心得
- Tensorflow入门资源
- IOS多线程编程 - NSOperation
- Android开发之Bitmap二次采样
- Vimdiff---VIM的比较和合并工具
- 高并发量网站解决方案
- Java高级软件工程师面试考纲