`
sw1982
  • 浏览: 511432 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

恶心的文件扩展名大小写bug

阅读更多

   以前支持的一个外快项目反馈了一个bug,说有些图片不能正常显示。图片全存在同一个目录,没理由zn002_1.jpg 能显示,zn002_0.jpg就无法显示啊(用户反馈的信息就是zn002_0.jpg文件存在都无法显示,而且通过程序功能修改了zn002_0照片还是无法显示)。

 

    于是要求将照片目录发过来,仔细对比发现:zn002_0.JPG 居然图片扩展名是大写的! web页面上加载的图片路径是 zn002_0.jpg,就出现了无法显示!

 

    那么继续分析bug产生的过程,就比较有意思了:

    step1:用户在新增记录的时候,提交了照片 *.JPG。 后台自动更改文件名后,给其存储为zn002_0.JPG ,记录地址“ zn002_0.JPG ”。这个时候照片是可访问的。

 

    step2:用户这个时候需要修改图片,恰恰这次上传的图片为*.jpg (这里是小写),那么后台就会试图写文件 zn002_0.jpg,并存储路径”zn002_0.jpg“。

    问题就诞生了,由于服务器OS为windows环境, 在已存在zn002_0. JPG文件的情况下,通过Java向目录写zn002_0.jpg的时候,windows不区分扩展名大小写,认为文件相同,执行了覆盖的操作。并且需要注意的是,覆盖后扩展名依然保留为原文件的大写格式。 这个时候文件名和存储路径就出现不一致了。

 

    其实换linux服务器环境一样存在隐含的bug,如果不做处理,那么就会在图片目录出现zn002_0. JPG 和zn002_0.jpg两个图片。 虽然不会影响显示,但绝算不上优雅了。

 

   于是乎,

  1.写个bat,将图片夹下所有扩展名转小写: if exist *.JPG ren *.JPG *.jpg

  2.然后在Java代码中对存储路径做处理,扩展名tolowcase(),只存储小写扩展名的文件路径。

  3在DB中将所有已有路径字段的扩展名部分全部update成小写。

这样解决现有图片不正常显示的问题,同时新增图片上传经过处理之后,全部为小写.jpg。不存在扩展名大小写bug

 

分享到:
评论

相关推荐

    妖眼文件批量改名器 1.23 绿色测试版.rar

    3、支持大小写开关、汉字转拼音、阿拉伯数字与汉字数字互换、字母大小写转换六种模式…… 4、列表改名:通过预设的文件目录,进行字典批量改名; 5、列表批量替换文本内容…… 6、增加改名结果,如果改名成功,则...

    妖眼批量文件或文件夹改名器

    1.增加文件扩展名过滤; 2.换掉BUG超多的新界面,改用老界面。虽然在美观和易用性上,有所下降,但是解决了经常提示出错,以及提高了改名的速度。 =================修正已知BUG============== 1. 优化运行速度,...

    批量修改文件后缀 源码

    6. **用户界面**:如果是小软件,那么可能包含了一个简单的用户界面,让用户能输入新的文件扩展名或选择要修改的文件夹。 7. **错误处理**:在实际应用中,程序需要考虑各种可能的错误情况,比如文件不存在、权限...

    批量修改文件名 - 亲自编写,版权所有,功能强大

    2.修正日期时间作为文件名时,同文件名同扩展名(大小写不同)时,认为不是同名的文件。现可以自动编号修正。 2017-1-11 1.取消文件图标的读取; 2.“秒显”文件名(测试读取6万个文件名,1秒内可完成读取并显示)...

    C#编程开发应用规范

    - **文件命名**:采用Pascal命名法,扩展名通常小写,如`.cs`用于C#类文件。 - **文件注释**:文件头部应包含版权信息、文件名、功能描述、创建和修改记录,便于版本控制和文档记录。 4. **大小写规则** - **类、...

    文件分割 zeal

    操作完成后 sufoet.iso 就不见,变成了 5 个 扩展名为 Zeal 的文件。把它们合并起来的语法是: Zeal.exe R:\sufoet.iso.part1-5.zeal 参数可以是任意一个分割出来的文件,所有的文件必须在同一个文件夹里。

    很好用的文件批量替换器

    2. **查找与替换规则**:用户设定要查找的文本(原始内容)和替换为的新文本(目标内容),还可以选择区分大小写、全词匹配等高级选项。 3. **预览功能**:在执行替换操作前,工具会提供预览功能,展示哪些文件的...

    批量修改文件名

    2.修正日期时间作为文件名时,同文件名同扩展名(大小写不同)时,认为不是同名的文件。现可以自动编号修正。 2017-1-11 1.取消文件图标的读取; 2.“秒显”文件名(测试读取6万个文件名,1秒内可完成读取并显示)...

    学生管理系统(文件,详细)

    本项目名为“学生管理系统(文件,详细)”,采用Java编程语言实现,利用文件作为数据存储媒介,具备基本的学生信息增删改查功能。以下将对该项目进行详细阐述。 首先,Java是一种广泛使用的面向对象编程语言,以其...

    网盘文件免费外链 v2.0.rar

    1.可以设置提取文件扩展名,然后更改相应的JS. 文件位置:css/decadework.js 1.可以设置上传文件格式,及文件大小和其它设置. ---V2.0更新内容: 1.增加威盘文件提取. 2.增加百度/威盘文件解析(例如:把百度...

    commons-io文件

    4. **FilenameUtils**: 提供了处理文件名和路径的方法,如获取文件扩展名、合并路径等。例如,`FilenameUtils.getExtension()` 可以提取文件的扩展名。 5. **EndianUtils**: 这个类用于处理字节顺序,特别是在处理...

    Discuz! v7.2 Bulid 20101020 简体UTF8 独立安装包.zip

    修正 附件列表中判断媒体文件扩展名不区分大小写 修正 收费附件直接下载判断 修正 后台指删帖减积分时各版块积分设置优先 修正 utf-8版中活动帖导出excel乱码问题 修正 边栏 Warning错误 新增 去掉特殊主题的...

    艾恩ASP无组件上传类 2013.12.09.zip

    包括提取表单数据、上传到不同文件夹、保存到数据库(上传和保存表单可同时进行)、限制上传扩展名、限制上传大小、选择文件保存类型(原文件名和时间随机命名)等! 艾恩ASP无组件上传类 2013.12.09 更新内容: 修正...

    Discuz! v7.2 Bulid 20101020 简体GBK 整合安装包.zip

    修正 附件列表中判断媒体文件扩展名不区分大小写 修正 收费附件直接下载判断 修正 后台指删帖减积分时各版块积分设置优先 修正 utf-8版中活动帖导出excel乱码问题 修正 边栏 Warning错误 新增 去掉特殊主题的...

    Discuz! v7.2 Bulid 20101020 简体GBK 独立安装包.zip

    修正 附件列表中判断媒体文件扩展名不区分大小写 修正 收费附件直接下载判断 修正 后台指删帖减积分时各版块积分设置优先 修正 utf-8版中活动帖导出excel乱码问题 修正 边栏 Warning错误 新增 去掉特殊主题的...

    Discuz! v7.2 Bulid 20101020 繁体BIG5 整合安装包.zip

    修正 附件列表中判断媒体文件扩展名不区分大小写 修正 收费附件直接下载判断 修正 后台指删帖减积分时各版块积分设置优先 修正 utf-8版中活动帖导出excel乱码问题 修正 边栏 Warning错误 新增 去掉特殊主题的...

    Discuz! v7.2 build 0110 繁体UTF8 独立安装包.zip

    修正 附件列表中判断媒体文件扩展名不区分大小写 修正 收费附件直接下载判断 修正 后台指删帖减积分时各版块积分设置优先 修正 utf-8版中活动帖导出excel乱码问题 修正 边栏 Warning错误 新增 去掉特殊主题的...

    Discuz! v7.2 Bulid 20101020 繁体UTF8 整合安装包.zip

    修正 附件列表中判断媒体文件扩展名不区分大小写 修正 收费附件直接下载判断 修正 后台指删帖减积分时各版块积分设置优先 修正 utf-8版中活动帖导出excel乱码问题 修正 边栏 Warning错误 新增 去掉特殊主题的...

    Discuz! v7.2 Bulid 20101020 简体UTF8 整合安装包.zip

    修正 附件列表中判断媒体文件扩展名不区分大小写 修正 收费附件直接下载判断 修正 后台指删帖减积分时各版块积分设置优先 修正 utf-8版中活动帖导出excel乱码问题 修正 边栏 Warning错误 新增 去掉特殊主题的...

    C语言笔记,一个很牛的人总结的,挺全的

    C语言笔记总结 以下是对C语言笔记的总结,该笔记记录了一个牛人学习C语言知识点,挺全的。 一、C语言基础 ...* 区分大小写 七、几种类型的数据符号 * 整型、浮点型、字符型、字符串型、数组型、结构体类型等

Global site tag (gtag.js) - Google Analytics