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文件上传与下载"将深入探讨如何利用Servlet实现这两个功能。 首先,我们来了解一下Servlet的基本概念。Servlet是Java编程语言中的一类特殊对象,它运行在服务器端,扩展了Web服务器的功能,用于...
总之,这两个库的结合使用极大地简化了Servlet中文件上传和下载的复杂性,让开发者可以更专注于业务逻辑,而不是底层的I/O操作。在实际开发中,务必注意安全性和性能优化,例如限制文件大小、防止路径遍历攻击等。...
总的来说,Servlet提供了一种灵活的方式处理文件上传和下载。通过合理的代码组织和安全措施,我们可以构建高效且安全的文件管理系统。在实际开发中,还可以结合其他框架,如Spring MVC,简化这些操作。
在这个"Servlet 文件上传下载例子"中,我们将探讨如何使用Servlet实现文件的上传和下载功能,这对于构建一个简单的图片文件服务器至关重要。 1. **文件上传** - **MultipartRequest**: 在Servlet中,处理文件上传...
总之,文件上传与下载是Web应用中不可或缺的部分,而Servlet提供了一套灵活且强大的处理机制。理解并掌握这些技术,对于任何Java Web开发者来说都是必要的技能。在实际开发中,还需要结合业务需求,进行合理的定制和...
### Servlet实现文件上传与下载 #### 一、概述 在Web开发中,文件的上传与下载是一项非常常见的功能需求。本文将详细介绍如何使用Java Servlet技术实现文件的上传和下载功能。我们将通过一个简单的示例来展示整个...
在这个项目中,我们重点关注的是Servlet如何实现文件上传、下载和缩略图的生成。 首先,让我们深入理解文件上传的过程。在Web应用中,文件上传通常通过HTML表单实现,使用`<input type="file" />`标签让用户选择要...
JavaServlet文件上传和下载,java初学者笔记!
jsp、servlet 文件上传下载技术详解 文件上传下载是 Web 应用中的一种常见需求,使用 jsp 页面和 servlet 实现文件上传下载是其中的一种解决方案。下面将详细介绍 jsp、servlet 文件上传下载技术。 文件上传下载...
总结来说,实现Servlet文件上传下载需要理解Servlet生命周期、HTTP请求处理、多部分数据解析以及文件I/O操作。Apache Commons FileUpload库简化了这一过程,但理解其背后的原理对于解决可能出现的问题和优化性能至关...
总结起来,Servlet中的文件上传和下载涉及到HTTP多部分请求、文件流操作、响应头设置等多个方面。通过JSP和Javabean,我们可以更方便地在页面上与用户交互,同时封装和管理业务逻辑。理解并熟练掌握这些技术,对于...
com.fm.FileManagerService:一个servlet用来实现主要的文件上传下载逻辑的 com.fm.MyPreogressListener:一个进度监听类,用来做上传进度条的 jquery-1.9.1.js index.jsp:文件列表页面 upload.jsp:文件上传form...
在文件上传和下载的场景中,Servlet将扮演接收请求、处理数据并发送响应的角色。 **文件上传:** 1. **表单设计**:在HTML页面上,我们需要一个表单让用户选择要上传的文件。表单需要设置`enctype="multipart/form-...
在Java Web开发中,JSP(Java...总的来说,JSP+Servlet实现文件上传下载涉及到HTML表单、Servlet请求处理、文件I/O以及第三方库的使用。通过这个实例,开发者可以掌握在Java Web环境中处理文件上传下载的基本流程。
【AjaxSubmit+Servlet实现表单文件上传与下载详解】 在Web开发中,文件上传和下载是常见的功能,尤其是在用户交互...通过实际操作和学习`upload-download-servlet`项目,开发者可以深入理解文件上传下载的完整流程。
### jsp+servlet实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...
总之,Servlet文件上传和下载是Web开发中的常见任务,理解并掌握其原理和实践方法对开发者来说至关重要。通过Servlet 3.0的新特性,我们可以更简洁地处理文件交互,同时配合前端库如AjaxFileUpload,提供流畅的用户...
在这个"文件上传下载servlet自用"的项目中,我们主要探讨的是如何利用Servlet实现文件的上传与下载功能。 首先,我们来理解一下文件上传。在Web应用中,用户通常需要将本地文件发送到服务器进行存储或处理。Servlet...
在Java Web开发中,"jsp+servlet文件上传数据库和下载"是常见的功能需求,涉及到的主要技术包括JSP(JavaServer Pages)、Servlet、文件处理以及数据库操作。以下将详细阐述这些知识点。 1. JSP(JavaServer Pages...
`SmartUpload`组件为Java Web开发者提供了高效、易用的文件上传下载解决方案,降低了开发复杂度,提高了开发效率。在使用过程中,结合良好的代码规范和安全策略,可以构建出稳定且功能完善的文件管理功能。