小文件下载的问题我刚刚找到答案,和你共享一下:
把jspSmartUpload中的那几个.class文件反编译一下,发现jspsmartUpload中的SmartUpload的downloadField有bug!
修改如下:
找到downloadField类中:m_response.getOutputStream().write(b, 0, b.length);
在他下面加入:
m_response.getOutputStream().close();
重新编译,运行完全正常!可有点奇怪就是为什么大于8K的文件不关输出流就没问题!
请遇到此问题的网友仔细看此帖,关键是发现问题!问题原因很关键!解决也许不难!
如果找不到源文件,请用反编译工具jad等反编译得到源码!
中文乱码的问题,我也没有解决,我出了40分问这个问题,如果你看到我的问题,请你帮我顶一下!
把jspSmartUpload中的那几个.class文件反编译一下,发现jspsmartUpload中的SmartUpload的downloadField有bug!
修改如下:
找到downloadField类中:m_response.getOutputStream().write(b, 0, b.length);
在他下面加入:
m_response.getOutputStream().close();
重新编译,运行完全正常!可有点奇怪就是为什么大于8K的文件不关输出流就没问题!
请遇到此问题的网友仔细看此帖,关键是发现问题!问题原因很关键!解决也许不难!
如果找不到源文件,请用反编译工具jad等反编译得到源码!
中文乱码的问题,我也没有解决,我出了40分问这个问题,如果你看到我的问题,请你帮我顶一下!
解决方案 »
- 通过HibernateDaoSupport.getSession.getConnection得到的连接需要手动关闭连接吗?
- 多台主机的网站怎么对应一个域名的 ?
- 一个小问题
- 急,想高人求教struts 中 checkbox 的使用
- 学习用struts框架,求助如何解决此问题
- 有一套ASP程序共4M 想改一下 让在法律上承认是我的 我现在有客户 等我售出两套后付一万元(就是现在改成了我不能立刻付钱)可到公司查我
- 哪位高手用过JReport报表工具,怎么与程序集成?
- 我有很多图片,一个个做成html页面太烦,我想用jsp进行管理,显示,100分求助
- 如何编程获取win2000终端客户的ip?
- 请教大虾一个问题
- TOMCAT5的数据库链接池问题!
- Web编辑器内容提交保存并返回后如何在编辑框保留历史内容~~~~
throws ServletException, IOException, SmartUploadException
{
if(s == null)
throw new IllegalArgumentException("File '" + s +
"' not found (1040).");
if(s.equals(""))
throw new IllegalArgumentException("File '" + s +
"' not found (1040).");
if(!isVirtual(s) && m_denyPhysicalPath)
throw new SecurityException("Physical path is
denied (1035).");
if(isVirtual(s))
s = m_application.getRealPath(s);
java.io.File file = new java.io.File(s);
FileInputStream fileinputstream = new FileInputStream(file);
long l = file.length();
boolean flag = false;
int k = 0;
byte abyte0[] = new byte[i];
if(s1 == null)
m_response.setContentType("application/x-msdownload");
else
if(s1.length() == 0)
m_response.setContentType("application/x-msdownload");
else
m_response.setContentType(s1);
m_response.setContentLength((int)l);
m_contentDisposition = m_contentDisposition != null ?
m_contentDisposition : "attachment;";
if(s2 == null)
m_response.setHeader("Content-Disposition",
m_contentDisposition + " filename=" +
toUtf8String(getFileName(s)));
else
if(s2.length() == 0)
m_response.setHeader("Content-Disposition",
m_contentDisposition);
else
m_response.setHeader("Content-Disposition",
m_contentDisposition + " filename=" + toUtf8String(s2));
while((long)k < l)
{
int j = fileinputstream.read(abyte0, 0, i);
k += j;
m_response.getOutputStream().write(abyte0, 0, j);
}
fileinputstream.close();
} /**
* 将文件名中的汉字转为UTF8编码的串,以便下载时能正确显示另存的文件名.
* 纵横软件制作中心雨亦奇2003.08.01
* @param s 原文件名
* @return 重新编码后的文件名
*/
public static 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();
}
注意源码中粗体部分,原jspSmartUpload组件对返回的文件未作任何处理,现在做了编码的转换工作,将文件名转换为UTF-8形式的编码形式。UTF-8编码对英文未作任何处理,对中文则需要转换为%XX的形式。toUtf8String方法中,直接利用Java语言提供的编码转换方法获得汉字字符的UTF-8编码,之后将其转换为%XX的形式。 将源码编译后打包成jspSmartUpload.jar,拷贝到Tomcat的shared/lib目录下(可为所有WEB应用程序所共享),然后重启Tomcat服务器就可以正常下载含有中文名字的文件了。另,toUtf8String方法也可用于转换含有中文的超级链接,以保证链接的有效,因为有的WEB服务器不支持中文链接。
我在jbuilder中用时,一大堆错误!!
请问如何在jbuilder中配置 jspsmartupload 组件