- 浏览: 161374 次
- 性别:
- 来自: 杭州
最新评论
由response.setContentType()方法开始谈JSP/Servelt上传下载文件
- 文章非原创,参考链接见文末!
- 常见的MIME类型如下表:
序号 |
内容类型 |
文件扩展名 |
描述 |
1 |
application/msword |
doc |
Microsoft Word |
2 |
application/octet-stream bin |
dms lha lzh exe class |
可执行程序 |
3 |
application/pdf |
|
Adobe Acrobat |
4 |
application/postscript |
ai eps ps |
PostScript |
5 |
appication/powerpoint |
ppt |
Microsoft Powerpoint |
6 |
appication/rtf |
rtf |
rtf 格式 |
7 |
appication/x-compress |
z |
unix 压缩文件 |
8 |
application/x-gzip |
gz |
gzip |
9 |
application/x-gtar |
gtar |
tar 文档 (gnu 格式 ) |
10 |
application/x-shockwave-flash |
swf |
MacroMedia Flash |
11 |
application/x-tar |
tar |
tar(4.3BSD) |
12 |
application/zip |
zip |
winzip |
13 |
audio/basic |
au snd |
sun/next 声音文件 |
14 |
audio/mpeg |
mpeg mp2 |
Mpeg 声音文件 |
15 |
audio/x-aiff |
mid midi rmf |
Midi 格式 |
16 |
audio/x-pn-realaudio |
ram ra |
Real Audio 声音 |
17 |
audio/x-pn-realaudio-plugin |
rpm |
Real Audio 插件 |
18 |
audio/x-wav |
wav |
Microsoft Windows 声音 |
19 |
image/cgm |
cgm |
计算机图形元文件 |
20 |
image/gif |
gif |
COMPUSERVE GIF 图像 |
21 |
image/jpeg |
jpeg jpg jpe |
JPEG 图像 |
22 |
image/png |
png |
PNG 图像 |
text/html HTML
text/plain TXT
text/xml XML
text/json json字符串
response.setContentType("text/plain"); <option value="image/bmp">BMP</option> <option value="image/gif">GIF</option> <option value="image/jpeg">JPEG</option> <option value="image/tiff">TIFF</option> <option value="image/x-dcx">DCX</option> <option value="image/x-pcx">PCX</option> <option value="text/html">HTML</option> <option value="text/plain">TXT</option> <option value="text/xml">XML</option> <option value="application/afp">AFP</option> <option value="application/pdf">PDF</option> <option value="application/rtf">RTF</option> <option value="application/msword">MSWORD</option> <option value="application/vnd.ms-excel">MSEXCEL</option> <option value="application/vnd.ms-powerpoint">MSPOWERPOINT</option> <option value="application/wordperfect5.1">WORDPERFECT</option> <option value="application/vnd.lotus-wordpro">WORDPRO</option> <option value="application/vnd.visio">VISIO</option> <option value="application/vnd.framemaker">FRAMEMAKER</option> <option value="application/vnd.lotus-1-2-3">LOTUS123</option>
此外不同浏览器下对同一个文件上传后获取到的类型可能不同。
1、文件下载:
文件下载的关键代码在于:
- < html >
- < head >
- < meta http-equiv = "Content-Type" content = "text/html; charset=GB18030" >
- < title > download page </ title >
- </ head >
- < body >
- < a href = "loadFile?filename=test.txt&path=" +escape("C:/test.txt") > Download It! </ a >
- </ body >
- </ html >
LoadFile类如下:
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class LoadFile extends HttpServlet {
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
- String filename = request.getParameter( "filename" );
- String path = request.getParameter( "path" );
- OutputStream o = response.getOutputStream();
- byte b[] = new byte [ 1024 ];
- // the file to download.
- File fileLoad = new File(path);
- // the dialogbox of download file.
- response.setHeader("Content-disposition" , "attachment;filename="
- + "test.txt" );
- // set the MIME type.
- response.setContentType("text/html" );
- // get the file length.
- long fileLength = fileLoad.length();
- String length = String.valueOf(fileLength);
- response.setHeader("Content_Length" , length);
- // download the file.
- FileInputStream in = new FileInputStream(fileLoad);
- int n = 0 ;
- while ((n = in.read(b)) != - 1 ) {
- o.write(b, 0 , n);
- }
- }
- public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
- doGet(request, response);
- }
- }
- test.jsp
- <%@page contentType= "text/html;charset=GB2312" %>
- <html>
- <body>
- 选择要上传的文件:<br />
- <form action="accept.jsp" method= "post" enctype= "multipart/form-data" >
- <input type="file" name= "boy" size= "38" >
- <br />
- <input type="hidden" id= "tt" name= "t" value= "1" />
- <input type="submit" id= "gg" name= "g" value= "提交" />
- </form>
- </body>
- </html>
- accept.jsp
- <%@page contentType= "text/html;charset=GB2312" %>
- <%@ page import = "java.io.*" %>
- <HTML>
- <BODY>
- <%
- //经测试,说明:ServletInputStream类中的readLine(byte[] b, int off, int len)
- //其中参数 byte[] b 起缓冲作用,此方法一次读取一行,但如果 byte[] b 定义的大小,比要读取的一行需占用的空间要小,则
- //该方法只读取 byte[] b 指定的大小;再次读取时会继续接着上次未读完的读取;返回值 :返回实际读取的字节数,当读到文档流的
- //最后时返回-1。
- try {
- ServletInputStream in=request.getInputStream();
- File f=new File( "c:\\test" , "a.txt" );
- FileOutputStream o=new FileOutputStream(f);
- //如果byte b[]=设置的值太短的话(假如设置为2),那么在 应用的 上传操作时会有影响,具体表现为无法解析文档路径等相关信息
- byte b[]= new byte [ 2046 ];
- int n;
- int i = 0 ;
- while ((n=in.readLine(b, 0 ,b.length))!=- 1 ) //ServletInputStream.readLine方法是逐行读取的。当它读完整个文件,返回-1,一般情况下返回读取的字节数
- {
- i++;
- System.out.println("------" +i);
- o.write(b,0 ,n);
- }
- o.close();
- in.close();
- }catch (IOException e){
- e.printStackTrace();
- }
- out.print("文件已经上传" );
- %>
- <a href="c:\\test\\a.txt" >查看结果</a>
- </body>
- </HTML>
- -----------------------------7db2611a404a4
- Content-Disposition: form-data; name = "boy" ; filename = "C:\Users\xijiang\Desktop\test.txt"
- Content-Type: text/plain
- Hello World!
- Hello World!
- Hello World!
- -----------------------------7db2611a404a4
- Content-Disposition: form-data; name = "t"
- 1
- -----------------------------7db2611a404a4
- Content-Disposition: form-data; name = "g"
- 提交
- -----------------------------7db2611a404a4--
- -----------------------------7db2611a404a4
- 是字段间隔符。
- < pre name = "code" class = "html" style = "background-color: rgb(255, 255, 255); text-align: -webkit-left; " > -----------------------------7db2611a404a4-- </ pre >
- < pre > </ pre >
- < pre name = "code" class = "html" style = "background-color: rgb(255, 255, 255); text-align: -webkit-left; " > 是结束符。 </ pre > < pre name = "code" class = "html" style = "background-color: rgb(255, 255, 255); text-align: -webkit-left; " > < input type = "file" > 对应的值表示为: </ pre > < pre name = "code" class = "html" style = "background-color: rgb(255, 255, 255); text-align: -webkit-left; " > < pre name = "code" class = "html" style = "background-color: rgb(255, 255, 255); text-align: -webkit-left; " > -----------------------------7db2611a404a4
- Content-Disposition: form-data; name = "boy" ; filename = "C:\Users\jxq\Desktop\test.txt"
- Content-Type: text/plain
- Hello World!
- Hello World!
- Hello World!</ pre > < pre name = "code" class = "html" style = "background-color: rgb(255, 255, 255); text-align: -webkit-left; " > 即第一行是 Content-Disposition、name和客户端上传的文件的目录,第二行是上传的文件类型,第三行是空行,接下来是文件内容。 </ pre > < pre name = "code" class = "html" style = "background-color: rgb(255, 255, 255); text-align: -webkit-left; " > 而表单提交的其他属性值则是通过 Content-Disposition: from-dat; name = xx 来表示。 </ pre > < pre name = "code" class = "html" style = "background-color: rgb(255, 255, 255); text-align: -webkit-left; " > 所以为了获取上传的文件的真正内容,我们不能简单地读取从request获得的输入流,必须进一步解析。 </ pre >
- < pre > </ pre >
- < pre name = "code" class = "html" style = "background-color: rgb(255, 255, 255); text-align: -webkit-left; " > </ pre > </ pre >
- < pre > </ pre >
- < pre > </ pre >
参考链接:
http://blog.csdn.net/kanaka10/article/details/6526630
http://zhangjunhd.blog.51cto.com/113473/19631
相关推荐
本知识点主要探讨如何使用JSP和Servlet来实现文件的上传与下载功能,这是Web应用中常见的需求。 首先,我们要理解JSP和Servlet的角色。JSP主要用于展示视图,而Servlet则处理业务逻辑和控制流程。在上传下载场景中...
将数据导出到Excel源代码及方法:response.setContentType("application/vnd.ms-excel");//响应正文的MIME类型,表示Excel response.addHeader("Content-Disposition", "attachment;filename=logininfo.xls"); ...
JSP+Servlet 实现文件下载 在 Web 应用中,实现文件下载是非常常见的需求。通过 JSP 和 Servlet,可以轻松地实现文件下载功能。下面将对 JSP+Servlet 实现文件下载的知识点进行详细的解释。 Step 1: 配置 web.xml ...
### jsp+servlet实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...
// 3:设置允许上传文件的大小 .这里是3m su.setMaxFileSize(3 * 1024 * 1024); // 4:初始化,接受页面传递过来的请求 su.initialize(getServletConfig(), request, response); // 5:上传 su....
### Java + JSP + Servlet 实现文件下载技术详解 #### 技术背景及应用场景 在Web应用开发过程中,实现文件的上传与下载是一项常见的需求。Java作为一种广泛使用的编程语言,在结合JSP(JavaServer Pages)和...
`jspSmartUpload`是一个非常实用的库,它简化了处理文件上传和下载的复杂性。本文将深入探讨如何使用`jspSmartUpload`来实现这两个功能,并详细解释其工作原理和相关知识点。 首先,`jspSmartUpload`是一个基于Java...
在这个"Servlet+jsp文件上传和下载"的场景中,我们将探讨如何使用这两种技术实现文件的上传与下载功能。 首先,文件上传涉及到HTTP协议中的多部分/形式数据(Multipart/form-data)格式。当用户通过HTML表单提交...
JSP 和 Servlet 中实现页面跳转的方式实例总结 在 web 开发中,页面跳转是一个非常常见的需求,JSP 和 Servlet 是 Java Web 开发中两个最基本的组件,了解它们如何实现页面跳转是非常必要的。本文将根据 JSP 和 ...
本文将深入探讨如何利用JSP实现文件的上传和下载功能,特别是重点介绍文件下载的三种方法。 首先,我们来讨论文件的上传。在JSP中,文件上传通常涉及HTTP表单和Servlet的使用。表单需要设置`enctype="multipart/...
在Java Web开发中,文件上传和下载是常见的功能需求,尤其是在构建动态网站或者Web应用程序时。Apache Commons FileUpload组件提供了一个强大且灵活的解决方案,使得在JSP环境中实现文件上传变得简单。下面我们将...
本文将深入探讨如何在Servlet中实现文件的上传和下载功能,以及在页面上利用JSP和Javabean来实例化对象。 首先,文件上传是通过HTTP多部分请求(Multipart Request)来实现的。Servlet 3.0及以上版本提供了对这种...
### JSP与Servlet复习知识点详解 #### 一、JSP与Servlet基础知识 **1. JSP简介** - **定义**: Java Server Pages (JSP) 是一种基于Java技术的服务器端脚本语言,用于创建动态网页。 - **特点**: JSP页面可以将...
本实例将详细介绍如何利用JSP和Servlet来实现文件的上传与下载功能。 首先,我们需要了解JSP和Servlet的基本概念。JSP是一种服务器端脚本语言,它允许开发者在HTML页面中嵌入Java代码,使得动态内容的生成更加直观...
在这个场景下,"JSP+Servlet实现mp3的上传下载"是一个典型的文件操作功能,涉及到用户界面展示、后端处理逻辑以及文件I/O操作。以下将详细解释这个主题中的关键知识点。 首先,JSP是一种服务器端脚本语言,它允许...
### JSP 实现文件上传与下载功能详解 #### 一、引言 在现代Web应用开发中,文件的上传和下载是一项基本而重要的功能。JavaServer Pages (JSP) 是一种广泛使用的服务器端脚本技术,它允许开发者创建动态网页,并且...
// 设置上传文件时用于临时存放文件的内存大小,这里是4K.多于的部分将临时存在硬盘 dfif.setRepository(new File(request.getRealPath("/") + "ImagesUploadTemp"));// 设置存放临时文件的目录,web根目录下的...
commons-fileupload-1.2.1实现文件上传 需导入commons-fileupload-1.2.1.jar和 commons-io-1.3.2.jar upload2.jsp <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%> <!DOCTYPE ...
在IT行业中,JSP(JavaServer Pages)和Servlet是用于...总的来说,通过结合JSP、Servlet和AJAX技术,我们可以构建出一个优雅的文件上传系统,它不仅可以处理文件上传,还能提供实时的进度反馈,极大地提升了用户体验。
JavaWeb 文件上传下载功能实现 JavaWeb 文件上传下载是 Web 应用系统开发中非常常用的功能之一。今天,我们来讲一下 JavaWeb 中的文件...通过本文的学习,读者可以了解 JavaWeb 中文件上传和下载的实现原理和方法。