Servlet文件上传与下载

protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int a = 1 ;
//得到全局对象,此对象就是网页中的内置对象之一:application
ServletContext application = this.getServletContext() ;
//创建一个文件工厂对象
DiskFileItemFactory factory = new DiskFileItemFactory() ;
//设置文件可以上传的大小
factory.setSizeThreshold(1024*1000) ;
//设置临时文件的路径
File f = new File("f:/temp") ;
if(!f.exists()){
f.mkdirs();//如果c盘没有temp文件夹,我们就创建一个
}
//设置临时文件的路径
factory.setRepository(f);

ServletFileUpload sfu = new ServletFileUpload(factory) ;

Zcgd_text zt = new Zcgd_text() ;
try {
List list = sfu.parseRequest(request);

System.out.println("list = "+list.size());
for (int i = 0; i < list.size(); i++) {
FileItem fileitem = (FileItem) list.get(i) ;
//如果为真就表示文本内容
if(fileitem.isFormField()){
if("title".equals(fileitem.getFieldName())){
zt.setTitle(SuperDao.parseCode(fileitem.getString())) ;
}
if("content".equals(fileitem.getFieldName())){
zt.setContent(SuperDao.parseCode(fileitem.getString())) ;
}
if("origin".equals(fileitem.getFieldName())){
zt.setOrigin(SuperDao.parseCode(fileitem.getString())) ;
}
if("write_time".equals(fileitem.getFieldName())){
zt.setWrite_time(SuperDao.parseCode(fileitem.getString())) ;
}
if("down_num".equals(fileitem.getFieldName())){
zt.setDown_num(SuperDao.parseCode(fileitem.getString())) ;
}
}else{
if("appendix".equals(fileitem.getFieldName())&&fileitem.getSize()>0){
//得到完整文件名
String fileName = fileitem.getName() ; //在服务中创建一个文件夹,用来保存此文件
File f4 = new File(application.getRealPath("/")+"/zcgdfj");
System.out.println("hahaha =" + f4);
if(!f4.exists()){
f4.mkdirs();
}
System.out.println("f4 = "+f4);
//创建一个文件对象,此对象就是文件所要上传的路径
File newfile = new File(f4,fileName);
fileitem.write(newfile);//最后将文件写入到指定的服务器路径中去
if(a==1){
zt.setAppendix("zcgdfj/"+fileName);
a++;
}else{
zt.setAppendix(zt.getAppendix()+";zcgdfj/"+fileName) ;
}
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
Zcgd_textDao dao = new Zcgd_textDao() ;
dao.save(zt) ;
request.setAttribute("msg", "<script>alert('添加成功');window.close();</script>") ;
request.getRequestDispatcher("news/saveZCGD.jsp").forward(request, response);
}



protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String fileName = request.getParameter("imagePath");//得到数据库存的地址
String imagePath = "c:\\papers\\appendixs\\"+ fileName;
response.reset();

String recommendedName = new String(fileName.getBytes(),"iso_8859_1");//设置文件名称的编码格式
response.setHeader("Content-Disposition", "attachment; filename=" + recommendedName );//设置文件头,下载默认名
OutputStream output = response.getOutputStream();// 得到输出流
File f1 = new File(imagePath);
FileInputStream fis = new FileInputStream(f1);
DataInputStream dataIn = new DataInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(output);// 输出缓冲流
// 每次读取1024个字节
byte[] buffer = new byte[1024];
int length = 0;
while ((length = dataIn.read(buffer)) != -1) {
bos.write(buffer, 0, length);
}
fis.close();
bos.flush();
bos.close();
output.close();
}

你可能感兴趣的:(文件上传,servlet)