- 浏览: 89073 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
kuge6688:
我的中文还不显示啊。。。。。。。。。。。。。。。求
Itext中文处理pdf(转) -
xmllong:
奇怪,第一个代码例子就不行,只输出start ok,中间的中文 ...
Itext中文处理pdf(转) -
byandby:
Class类有一个forName()静态方法,可以根据传入的类 ...
Java中的Class对象 -
xiaoyuqi00:
c:/aoke_temp/userInfo2009070710 ...
用jspsmartupload下载文件 -
wsbwindy:
good
怎样用JspSmartUpload实现文件上传攻略
一般无论网站还是其他系统都会用到文件的上传和下载,对于文件的上传前面已经介绍过了,在本文中将详细介绍一下文件的下载实现以及经常碰到的问题,本文代码已经过调试,可以正常使用:
文件的下载一般采用的有两种方式:通过流或利用jspsmartupload.jar下载。
一.采用数据流下载:
第一个页面:(存在“下载”按钮的页面)
function doDownload(filePath,disName) {
var utl="download.jsp?filePath="+filePath+"&disName="+disName;
document.all.opForm.action=url;
// document.all.opForm.target="_blank";
document.all.opForm.submit();
}
<form name="opForm" method="post" action="">
<table width="10%" name="table1">
<tr>
<td>
<input name=”cmdDownload”onclick=”doDownload(‘<%=filePath%>’,’<%=fileName%>’)” value=”下载”>
</td>
</tr>
</table>
</form>
第二个页面(download.jsp):
<%@ page import="java.io.OutputStream" %>
<%@ page import="java.io.FileInputStream" %>
<%
//response.reset();
//filePath为全路径:D:/upload/a.doc
String path = request.getParameter("filePath");
int k = path.lastIndexOf("/");
String name = path.substring(k + 1 , path.length());
response.setContentType("unknown");
response.addHeader("Content-Disposition","filename=\"" + name + "\"");
try {
OutputStream os = response.getOutputStream();
FileInputStream fis = new FileInputStream(path);
byte[] b = new byte[1024];
int i = 0;
while((i = fis.read(b)) > 0) {
os.write(b, 0 ,i);
}
fis.close();
os.flush();
os.close();
} catch(Exception e) {
e.printStackTrace();
}
%>
如果只是这样写在tomcat底下可以正常使用,但weblogic底下会报如下错误:
java.net.ProtocolException: Exceeded stated content-length of: '19456' bytes
at weblogic.servlet.internal.ServletOutputStreamImpl.checkCL(ServletOutputStreamImpl.java:219)
at weblogic.servlet.internal.ServletOutputStreamImpl.write(ServletOutputStreamImpl.java:170)
at com.jspsmart.upload.SmartUpload.downloadFile(SmartUpload.java:579)
at com.jspsmart.upload.SmartUpload.downloadFile(SmartUpload.java:508)
at jsp_servlet._page.__download._jspService(__download.java:184)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:431)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at com.nstc.web.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:30)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6297)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:97)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3575)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2573)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:178)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:151)
>
这是因为weblogic会向response中写东西造成的,解决方式是将此句response.reset();的注释打开,这样在使用response时先将其重置。
二 .利用jspsmartupload.jar实现下载
第一个页面同上
download.jsp实现如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="com.jspsmart.upload.*" %>
<%!
public String toUtf8String(String s)
{
StringBuffer sb = new StringBuffer();
for (int i = 0; i < s.length(); i++)
{
char c = s.charAt(i);
if (c >= 0 && c <= 255)
{
sb.append(c);
}
else
{
byte[] b;
try
{
b = Character.toString(c).getBytes("utf-8");
}
catch (Exception ex)
{
System.out.println(ex);
b = new byte[0];
}
for (int j = 0; j < b.length; j++)
{
int k = b[j];
if (k < 0)
k += 256;
sb.append("%" + Integer.toHexString(k).toUpperCase());
}
}
}
return sb.toString();
}
%>
<%
response.reset();//如果在weblogic底下同样要加上此句
String filePath = request.getParameter("filePath");
String disName = request.getParameter("disName");
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
// 初始化
su.initialize(pageContext);
// 设定contentDisposition为null以禁止浏览器自动打开文件,
//保证点击链接后是下载文件。若不设定,则下载的文件扩展名为
//doc时,浏览器将自动用word打开它。扩展名为pdf时,
//浏览器将用acrobat打开。
su.setContentDisposition(null);
// 下载文件
String fileName = toUtf8String(disName);
try{
su.downloadFile(filePath,null,fileName);
}
catch(java.io.FileNotFoundException e){
%>
<script Language="javascript">
alert('服务器上未找到要下载的文件!');
</script>
<%}
%>下载完毕!
至此文件下载介绍完毕。
评论
<2009-7-7 上午10时37分50秒 CST> <Error> <HTTP> <BEA-101005> <[weblogic.servlet.internal.WebAppServletContext@10abc94 - appName: '_appsdir_YDYWTEST_dir', name: 'YDYWTEST', context-path: '/YDYWTEST'] getRealPath() called with unsafe path: "c:/aoke_temp/userInfo20090707103741.xls".
java.io.IOException: 文件名、目录名或卷标语法不正确。
at java.io.WinNTFileSystem.canonicalize0(Native Method)
at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:395)
at java.io.File.getCanonicalPath(File.java:531)
at weblogic.servlet.internal.WebAppServletContext.getRealPath(WebAppServletContext.java:666)
at com.aoke.excel.download.SmartUpload.isVirtual(SmartUpload.java:905)
Truncated. see log file for complete stacktrace
>
<2009-7-7 上午10时37分50秒 CST> <Error> <HTTP> <BEA-101005> <[weblogic.servlet.internal.WebAppServletContext@10abc94 - appName: '_appsdir_YDYWTEST_dir', name: 'YDYWTEST', context-path: '/YDYWTEST'] getRealPath() called with unsafe path: "c:/aoke_temp/userInfo20090707103741.xls".
java.io.IOException: 文件名、目录名或卷标语法不正确。
at java.io.WinNTFileSystem.canonicalize0(Native Method)
at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:395)
at java.io.File.getCanonicalPath(File.java:531)
at weblogic.servlet.internal.WebAppServletContext.getRealPath(WebAppServletContext.java:666)
at com.aoke.excel.download.SmartUpload.isVirtual(SmartUpload.java:905)
Truncated. see log file for complete stacktrace
>
我这还有一个问题!
麻烦下楼主
发表评论
-
Itext中文处理pdf(转)
2010-06-04 17:26 8078http://quicker.iteye.com/blog/5 ... -
JfreeChart学习总结
2008-09-10 17:35 1041JfreeChart学习总结 关键 ... -
Tomcat 5/6 utf-8 编码下完美解决(post/get)中文表单问题的过滤器
2008-05-30 00:40 68601.过滤器 (包含get与post方式)SetCharacte ... -
:Java的AJAX请求中文编码方法
2008-05-29 21:41 3243这里的方案是页面(page)是基于GBK(gb2312) 的编 ... -
Tomcat 5/6 GBK 编码下完美解决中文表单问题的过滤器
2008-05-29 21:40 1818常 见的 Tomcat 5 表单编码提交后乱码的 ... -
对象的初始化
2008-05-27 09:39 1099调用构造器的具体处理步骤: 1.所有数据域被初始化为默认值(0 ... -
简单的FTP客户端 sun.net.ftp.FtpClient
2008-01-04 23:15 3111某些数据交换,我们需要通过ftp来完成。sun.net.ftp ... -
sun.net.ftp.FtpClient的函数说明
2008-01-04 23:14 1327sun.net.ftp.FtpClient., ... -
java实现的ftp文件上传例题
2008-01-04 23:13 2501前几天写过一编"关于java的http协议文件上传实 ... -
用smartUpload传文件的同时,传递参数的注意事项
2008-01-04 23:12 2104用smartUpload传文件的同时,传递参数时,在获取参数时 ... -
jsp下载文件的问题
2008-01-04 23:10 1329程序如下: <%@page language ... -
怎样用JspSmartUpload实现文件上传攻略
2008-01-04 23:08 2385㈠ 表单要求 对于上传文件的FORM表单,有两个 ... -
从追MM谈Java的23种设计模式
2008-01-04 23:05 890设计模式做为程序员的& ... -
java操作Excel、PDF文件
2008-01-04 23:03 1617下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是 ... -
Java中的内部类
2008-01-04 22:59 1031从Java1.1开始引入了内部类以来,它就引起了人们的激烈争论 ... -
用servlet filter 解决编码问题的一个小例子
2008-01-04 22:58 1636当在做程序的是你也许会遇到一些很让你恼火的乱码问题,就是在你在 ... -
JSTL标签的使用
2008-01-04 22:57 36971. <c:out>标签的用法 ... -
用java实现简单的email正则表达式判断
2008-01-04 22:56 1549import java.sql.*; import java. ... -
eclipse内存不足解决方法
2008-01-04 22:55 2092问题解决]用ECLIPSE3.2+MYECLIPS ... -
如何编写一个简单的Servlet
2008-01-04 22:54 19401.写一个Servlet的java源文件2.编译Servlet ...
相关推荐
`jspSmartUpload`是一个非常实用的库,它简化了处理文件上传和下载的复杂性。本文将深入探讨如何使用`jspSmartUpload`来实现这两个功能,并详细解释其工作原理和相关知识点。 首先,`jspSmartUpload`是一个基于Java...
1. **下载并解压**:首先从官方网站下载jspSmartUpload的最新版本,使用WinZip或WinRAR解压缩,得到jspSmartUpload.zip文件。 2. **JAR文件处理**:将解压缩后的jspSmartUpload.jar放置于Tomcat的shared/lib目录下...
在压缩包"JspSmartUpload文件上传下载.zip"中,我们可以看到以下几个关键文件和目录: - `文件上传下载.iml`:这是IntelliJ IDEA的项目配置文件,包含了项目的模块信息。 - `out`:编译后的类文件和资源文件所在的...
综上所述,"jspSmartUpload.jar下载.rar"是一个教育相关的资源,它提供了在JSP环境中使用SmartUpload库进行文件上传功能的工具和教程。通过学习和实践,开发者能够更好地理解和掌握在Web应用中实现文件上传的技巧。
下载即可运行,但是这个压缩包不支持中文名称的文件下载功能,我上传了一个可以下载中文的不会乱码的jspSmartUpload 组件,网址:http://download.csdn.net/detail/huahuahailang/4265620 照着使用,即可下载中文。
上述代码展示了如何在JSP页面中使用SmartUpload实现简单的文件上传。 通过以上内容,我们可以看到JSP SmartUpload为开发者提供了一个高效、便捷的文件上传解决方案。无论是新手还是经验丰富的开发者,都可以快速地...
**JSpsmartupload组件**是一个基于Java的上传文件解决方案,主要应用于JSP(Java Server Pages)环境中。这个组件提供了一种简单且强大的方式来处理用户通过网页上传的文件。在标题和描述中提到的,该组件的核心是用...
在本文中,我们将深入探讨如何使用JSP(JavaServer Pages)和jspSmartUpload库来实现文件的上传与下载功能。JSP是一种动态网页技术,它允许开发者在HTML中嵌入Java代码,从而创建交互式的Web应用程序。而jsp...
最近实验室做了一个项目,使用jspsmartupload来实现的文件的上传下载,原来在windows平台运行的挺好,但是后来系统移植到linux平台上,结果在上传或下载的文件名中有中文时就会出现乱码。后来查了网上一些人的解决...
JspSmartUpload上传文件实例,基于JspSmartUpload组件的文件上传实例,JspSmartUpload 上传类,在JSP中进行文件上传的类,内含文档和使用例子。这个在JSP编程环境下,使用频率还是挺高的,这个例子可帮助你在JSp环境...
通过以上步骤,你可以利用`jspSmartUpload`在Java Web应用中实现高效且安全的文件上传和下载功能。注意,尽管`jspSmartUpload`是一个强大的工具,但它已经有些年头了,可能不支持最新的Java和Web技术。在新项目中,...
### jspSmartUpload实现文件上传下载 #### 一、SmartUpload简介 SmartUpload是一个非常流行的Java Web组件,用于处理文件的上传与下载操作。它简化了文件上传过程中的复杂度,使得开发人员能够轻松地在Web应用中...
### 使用jspSmartUpload进行文件上传与下载 #### jspSmartUpload简介 jspSmartUpload是一款用于处理文件上传功能的Java库,适用于JSP环境。它能够简化文件上传过程中的复杂度,提供一系列便捷的功能来帮助开发者...
jspSmartUpload是一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。该组件有以下几个特点: 1、使用简单。在JSP文件中仅仅书写三五行java代码就可以搞定文件的上传或下载,方便。 2...
用几个简单的java语句操作java.io.BufferedInputStream和java.io.BufferedOutputStream,就能彻底解决jspSmartUpload乱码问题。... zip包中包含了jspsmartupload.jar和文件上传、下载示例代码,直接使用即可。
jspSmartUpload是由www.jspsmart.com网站开发的一个可免费使用的全功能的文件上传下载组件,适于嵌入执行上传下载操作的JSP文件中。该组件有以下几个特点: <br>1、使用简单。在JSP文件中仅仅书写三五行...