`
fisher_y
  • 浏览: 1974 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

文件下载时文件名过长导致截断的问题

IE 
阅读更多
直接用URLEncoder.encode(fileName,"UTF-8"),得到的文件名长度会被截断。
解决方法:
      文件名先用“GB2312”编码,然后用“ISO8859_1”解码.

代码例子:
filename=URLEncoder.encode(filename,"GB2312");
filename=URLDecoder.decode(filename, "ISO8859_1");
response.setContentType("application/x-msdownload");

response.setHeader("Content-disposition","attachment; filename="+filename);



// 直接用IE打开
//response.setHeader("Content-disposition", "filename=" + filename);

BufferedInputStream bis = null;
BufferedOutputStream bos = null;

try {
bis = new BufferedInputStream(new FileInputStream(
Constants.listFilePath + directoryname + "\\" + filename1));
bos = new BufferedOutputStream(response.getOutputStream());

byte[] buff = new byte[2048];
int bytesRead;

while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
bos.flush();
} catch (final IOException e) {
log.error(e.toString());
}
分享到:
评论
1 楼 bjcsj 2008-07-10  
按照你说的还是不行呀

相关推荐

    自动截断长文件名(保留文件后缀)

    在IT行业中,处理文件名有时会遇到一个问题,即文件名过长,这可能导致在某些操作系统或文件系统中出现问题,比如Windows。为了解决这个问题,我们可以采用自动截断长文件名的技术,确保它们适应特定的限制,同时...

    长文件名剪刀手

    "长文件名剪刀手"是一款专为Windows操作系统设计的实用工具,它的主要功能是帮助用户批量更改文件或文件夹的名称,特别是处理那些过长的文件名,使其更易于管理和操作。在日常工作中,我们可能会遇到由于文件名过长...

    解决adb push pull中文出现乱码截断的的adb.exe 版本34.01

    标题提到的问题是“adb push pull中文出现乱码截断”,这通常发生在尝试通过ADB传输包含中文字符的文件时,由于编码不兼容或者版本问题导致的。描述中提及的“adb.exe 版本34.01”可能是针对这个问题的一个更新修复...

    ASP无组件压缩下载非winrar及cmd支持(已解决中文文件名问题)

    如果文件名过长,可能会导致压缩失败或者在下载时出现问题。因此,在实际应用中,开发者需要对文件名长度进行检查,或者采取截断、替换或者哈希等策略来处理长文件名。 在线目录压缩下载V1很可能是这个解决方案的源...

    IIS短文件名漏洞利用工具

    每个长文件名都可以有一个对应的8.3格式的短文件名,形式通常是“目录名~1.FIL”,其中“目录名”是长文件名的前6个字符,“~1”表示这是同一目录下第一个被截断的文件,“FIL”则是文件扩展名的前三个字符。...

    精彩编程与编程技巧-如何压缩较长的全路径文件名中的路径 (Path) 字串长度?...

    在某些场景下,如界面上显示文件路径时,过长的路径可能会导致界面布局出现问题或者信息展示不完整。因此,学习如何有效地压缩或缩短文件路径显得尤为重要。 #### 重要概念 在讨论如何压缩路径之前,我们需要了解...

    php包含截断小结.txt

    1. **严格验证输入**:对用户提交的数据进行严格的验证和过滤,确保不包含可能导致截断的特殊字符。 2. **限制文件路径**:只允许从指定目录加载文件,避免使用相对路径或动态生成的路径。 3. **使用安全函数**:...

    android称长度不符

    1. **字符串资源**:在Android的XML资源文件中定义字符串时,如果字符串过长,可能会超过Android系统允许的最大长度,导致编译错误。系统默认的限制可能因设备和Android版本而异,通常在10000个字符左右。 2. **...

    截断数据库日志方法.pdf

    但是,如果不加以管理,日志文件的大小可能会无限增长,导致以下几个问题: 1. **存储空间占用**:庞大的日志文件会占用大量的磁盘空间。 2. **性能下降**:过大的日志文件会影响数据库的写入速度和响应时间。 3. *...

    009-Web安全基础5 - 文件处理漏洞.pptx

    当用户可以控制文件的路径、文件名、扩展名时,他们可能上传恶意脚本或木马到服务器。此漏洞的产生原因包括: 1. **检查不严**:应用没有对上传的文件进行严格的格式和内容检查。 2. **忽略文件格式检查**:只在...

    技术分享从浅入深学习PHP文件包含.pdf

    3. **`include_once()`**:与`include()`相同,但如果同一文件已经被包含过,则不会再次包含,用于避免重复包含导致的问题。 4. **`require_once()`**:与`require()`相似,同样检查文件是否已经包含过,未包含则...

    信息安全技术:绕过白名单检测上传.pptx

    例如,某些编程语言中的CreateTextFile()函数可能在遇到0x00字符时停止处理,导致文件名在路径中被截断,从而暴露系统的脆弱性。 为了防御这种攻击,开发者应当采取以下措施: 1. 对输入的文件名进行严格的清理和...

    ms sql 日志文件压缩

    5. **调整日志文件增长设置**:为了避免日志文件突然过大,可以在数据库创建时合理设置日志文件的增长策略,如设置固定的增量大小或百分比增长。 6. **定期清理无用事务**:通过删除不必要的临时表、索引和大型对象...

    如何在SQL Server 2008中截断日志文件

    然而,当数据库活动频繁或长时间未进行备份时,日志文件可能会迅速增长,导致磁盘空间不足,甚至使数据库运行缓慢或无响应。在这种情况下,我们需要采取措施来截断日志文件,释放不必要的空间。 首先,了解SQL ...

    关于读取popen输出结果时未截断字符串导致的命令行注入详解

    在本文中,我们将深入探讨一个特定的场景,即当读取`popen`输出结果时,由于字符串未被正确截断,从而可能导致的安全问题。 0x01 **命令行注入的概念** 命令行注入是一种安全漏洞,它发生在程序将用户输入的数据...

    SQL2005 压缩日志及数据库文件大小

    随着数据库的使用,日志和数据文件可能会不断增长,占用大量磁盘空间,这可能导致性能下降甚至存储不足的问题。以下是一些关于如何压缩SQL Server 2005的日志和数据库文件的步骤以及注意事项: 1. **清空日志**: ...

    VC记事本程序

    2. 在调用`CreateFile`时,没有提供完整的文件名,导致文件创建不完整。 3. 编程逻辑错误,可能导致了文件名的截断或丢失。 为了修复这个问题,你需要检查以下部分: 1. 文件名的获取:确保从用户界面或代码中正确...

    php_web项目中utf-8的问题.do

    对于过长的文章标题,在前端显示时可能需要进行截断。然而,由于UTF-8编码下的中文字符占用三个字节,若截取不完整则会导致乱码或“?”的显示。为了解决这个问题,可以编写如下函数对标题进行安全截取: ```php ...

    29.文件上传漏洞和IIS6.0解析漏洞及防御原理(二)1

    %00截断是一种利用URL编码方式绕过文件名检查的技巧。某些服务器会将%00视为字符串结束符,导致后面的文件扩展名被忽略。攻击者可以在文件名中插入%00,使得服务器只处理截断前的部分,从而可能上传恶意脚本。 四. ...

    HmTW5.0sql(旧版本,注入漏洞+上传截断漏洞).rar

    如果该功能没有正确验证上传文件的大小和类型,攻击者可以通过截断文件名或文件内容来欺骗服务器,使其误认为上传的是安全的文件类型,实际上则可能包含了可执行的脚本代码,如ASP、PHP或JavaScript。一旦这样的文件...

Global site tag (gtag.js) - Google Analytics