`

java servlet上传、下载

    博客分类:
  • java
阅读更多

http://yitong.xiaodoutao.com/

<!--文件上传 servlet-->

public class UpFile extends HttpServlet{

 

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

response.setCharacterEncoding("utf-8");

DiskFileItemFactory factory = new DiskFileItemFactory(); 

factory.setSizeThreshold(1024 * 1024 * 20);

//factory.setRepository(new File(request.getRealPath("/")));

ServletFileUpload upload = new ServletFileUpload(factory);

// 允许上传的文件类型 

//upload.setAllowedFilesList("doc,xls,"); 

  // 拒绝上传的文件类型 

//upload.setDeniedFilesList("exe,bat,jsp"); 

//文件大小20M

upload.setSizeMax(1024 * 1024 * 20);

 

List items;

String affix =null;

try {

items = upload.parseRequest(request);

for (Iterator it = items.iterator(); it.hasNext();) {

FileItem item = (FileItem) it.next();

if (item.isFormField()) {

String name = item.getFieldName();

 

if(name.equals("boy"))

{

affix = item.getString("utf-8");

}

} else {

if (item.getSize() > 0) {

String fieldName = item.getFieldName();

String fileName =item.getName();

String contentType = item.getContentType();

/*affix = System.currentTimeMillis()

+ fileName.substring(fileName.lastIndexOf("."),

fileName.length());*/

//affix = fileName.substring(fileName.lastIndexOf("."),fileName.length());

fileName = new String(fileName.getBytes("utf-8"),"utf-8"); 

affix = fileName;

//设置上传路径

FileOutputStream fos = new FileOutputStream(request.getRealPath("Upload")+"/"+ affix);

if (item.isInMemory()) {

fos.write(item.get());

}

else {

InputStream is = item.getInputStream();

byte[] buffer = new byte[1024];

int len;

while ((len = is.read(buffer)) > 0) {

fos.write(buffer, 0, len);

}

is.close();

}

fos.flush();

fos.close();

}

}

}

} catch (FileUploadException e) {

e.printStackTrace();

}

 

}

}

<!--结束 -->

<!-- 文件下载servlet-->

 

public class DownFile extends HttpServlet {

private ServletConfig config;  

protected void  doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

java.io.BufferedInputStream bis = null;

java.io.BufferedOutputStream bos = null;

try {

String filename = request.getParameter("filename");

filename = new String(filename.getBytes("iso-8859-1"), "utf-8");

response.setContentType("application/x-msdownload");

response.setHeader("Content-disposition",

"attachment; filename="+ new String(filename.getBytes("iso-8859-1"),"utf-8"));

//设置下载路径

bis = new java.io.BufferedInputStream(

new java.io.FileInputStream(config.getServletContext().getRealPath("Upload/" + filename)));

bos = new java.io.BufferedOutputStream(response

.getOutputStream());

byte[] buff = new byte[2048];

int bytesRead;

while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {

bos.write(buff, 0, bytesRead);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

if (bis != null)

bis.close();

if (bos != null)

bos.close();

}

}

public void init(ServletConfig config) throws ServletException {

this.config = config;

}

}

<-- 下载结束-->

<-- 对请求信息过滤-->

 

public class Filte implements Filter{

 

public void destroy() {

}

 

public void doFilter(ServletRequest request, ServletResponse response,

FilterChain chain) throws IOException, ServletException {

HttpServletRequest hRequest = (HttpServletRequest)request;

HttpServletResponse hResponse = (HttpServletResponse)response;

hRequest.setCharacterEncoding("UTF-8");

hResponse.setCharacterEncoding("UTF-8");

chain.doFilter(hRequest, hResponse);

}

 

public void init(FilterConfig arg0) throws ServletException {

 

}

 

}

<-- 过滤结束-->

<!-- jsp页面开始-->

 

  <body>

 

<P>选择要上传的文件:<BR>

   <FORM action="<%=basePath %>UpFile" method="post" ENCTYPE="multipart/form-data">

      <INPUT type=FILE name="boy" size="45"> 

      <BR> <INPUT type="submit" name ="g" value="提交">

   </FORM>

 

     <!-- 文件名应该为查询出来的,在这里先使用刚上传的文件名 -->

   <% 

String fname ="mark.txt";

     %>

 

  支持目标另存为

 <A target="_blank" href="<%=basePath%>DownFile?filename=<%=fname%>">下 载</A>

 

  </body>

<!--jsp页面结束 -->

 

 

注:配置一下web.xml

http://yitong.xiaodoutao.com/

3
0
分享到:
评论
2 楼 miaowei 2011-11-21  
sha851092391 写道
LZ你试一下中文的文件名字,用多个浏览器测试一下上传,文件名是不是乱码了。

你好,通过对IE,Google,Firefox三个浏览器上传测试没有发现中文乱码,不过在下载时点击另存为---出现的文件名倒是乱码。这个问题我也一直在找。
1 楼 sha851092391 2011-11-21  
LZ你试一下中文的文件名字,用多个浏览器测试一下上传,文件名是不是乱码了。

相关推荐

    java servlet上传下载

    在Java Servlet中,处理文件上传和下载是常见的功能需求。在这个压缩包文件"TestFileUploadAndDownLoad"中,可能包含了实现这些功能的示例代码。 文件上传: 在Java Servlet中,我们通常使用`HttpServletRequest`...

    java servlet上传下载工具类

    在本场景中,"java servlet上传下载工具类"是指利用Servlet技术实现的、专门用于文件上传和下载的代码模块。这个工具类是基于"孤傲苍狼"的实现进行封装的,通常这样的封装是为了提高代码的复用性,简化开发流程,...

    java servlet实现图片上传下载

    在本场景中,我们将深入探讨如何使用Java Servlet实现图片的上传和下载功能。 首先,我们需要理解图片上传的基本流程。用户通过浏览器提交一个包含图片数据的表单到服务器,Servlet接收这个请求,将图片数据保存到...

    java servlet上传文件 项目中用的.绝对能用

    上载文件.轻松搞定.java Servlet上传文件.

    Java Servlet

    4. 文件上传下载:Servlet可以处理multipart/form-data类型的表单数据,实现文件上传下载功能。 总之,Java Servlet作为Web开发中的基石,提供了强大的服务器端功能,结合Servlet容器和其他Java EE组件,能够构建...

    JAVA SERVLET 高级编程

    **JAVA SERVLET 高级编程** 在Java Web开发领域,Servlet是不可或缺的一部分,它为开发者提供了处理HTTP请求的能力。本教程将深入探讨Java Servlet在处理多媒体信息、集成Java Server Pages (JSP)技术、实现Servlet...

    servlet实现上传下载 java源码

    在这个场景中,我们关注的是如何使用Servlet来实现文件的上传和下载功能,同时结合Tomcat服务器和XML文件进行数据存储。以下是关于这些知识点的详细说明: 1. **Servlet**: Servlet是Java EE规范的一部分,它是一...

    servlet 文件上传下载例子

    这个"Servlet 文件上传下载例子"将演示这些概念的实际应用,帮助开发者了解如何在Java Web环境中处理文件操作。通过学习和实践,你可以创建一个可靠的文件服务器,支持用户安全、高效地上传和下载文件。

    java Servlet学习笔记

    Java Servlet是Java编程语言中用于处理Web服务器与客户端交互的一种技术,主要应用于构建动态Web应用程序。Servlet是Java EE(企业版)的一部分,它允许开发者在服务器端创建强大的、可扩展的网络应用程序。以下是对...

    Java(Servlet)上传文件的demo

    本示例"Java(Servlet)上传文件的demo"提供了一个简单的文件上传功能,适用于初学者理解和实践。以下是对这个demo的详细解析: 1. **Servlet基本概念**: Servlet是一个Java类,遵循Servlet API规范,它扩展了...

    servlet上传下载文件

    总结来说,"servlet上传下载文件"是一个使用Java Servlet实现的Web应用程序,允许用户上传文件至服务器,并能够从服务器下载这些文件。这个系统的核心在于Servlet的`doPost`或`doGet`方法,它们处理HTTP请求,读取或...

    Flex4.6+java+servlet上传图片例子+图片上传预览

    这个"Flex4.6+java+servlet上传图片例子+图片上传预览"的项目,结合了前端的Flex技术和后端的Java Servlet,为我们提供了一个完整的解决方案。下面将详细解释这个项目的各个组成部分及其工作原理。 首先,让我们来...

    java servlet 博客源码

    7. **文件上传和下载**:如果博客支持附件或图片上传,那么理解如何在Servlet中处理文件流,存储和提供下载链接是必要的。 8. **会话管理**:为了保持用户登录状态,可能需要使用HttpSession对象来存储和跟踪用户...

    Flex+Java Servlet处理文件上传

    Flex+Java Servlet处理文件上传 关于上传文件

    java+Servlet图片上传下载

    在这个"java+Servlet图片上传下载"的项目中,我们将深入探讨如何利用Java Servlet实现图片的上传和下载功能,这对于构建动态网站或者Web应用是非常重要的。 首先,我们要理解Servlet的工作原理。Servlet是Java的一...

    深入Java Servlet网络编程

    第6章 利用Servlet上传和下载文件 6. 1 得到HTTP请求消息的内容 6. 2 利用Servlet得到上传的文件 6. 2. 1 上传文件及表单域的请求实体的分析 6. 2. 2 得到上传文件的编程实例 6. 3 使用Servlet下载文件 6. 3. ...

    java servlet实现上传/下载文件

    servlet实现上传文件和下载文件的方法,在浏览器中输入http://ip:port/servletName?path这种方式将客户端文件上传至服务器端,简单的例子,servletName参照web.xml path参照servlet中写的参数

    基于java servlet的题库系统

    【基于Java Servlet的题库系统】是一个非常适合初学者探索Java Web开发基础的项目。这个系统主要依赖于Servlet技术,这是一种用于构建动态Web应用程序的技术,它允许服务器端代码处理客户端的请求并返回响应。在这个...

    Java servlet 和 swf上传超大文件源码

    Java Servlet和SWFUpload是两种不同的技术,但它们在处理大文件上传方面有着共同的应用。在Web开发中,用户可能需要上传大文件,如视频、音频或大型文档,这就需要服务器端具有处理大文件上传的能力。Java Servlet是...

Global site tag (gtag.js) - Google Analytics