精华内容
下载资源
问答
  • (该文件名与出错的文件名一样),复 制到用户电脑中,将“bak”修改为“Dwg”文件即 可打开。(PS:“bak”文件一般就在“Dwg”格式文件旁边)具体解决方法如下:打开我的电脑,点 击上面的“工具”选项,选择“文件夹...

    存储问题:一般情况下,用户在保存CAD图形文件时,同时会生成一个后缀名为“bak”的备份文件,在电脑上找到这个“bak”的文件。(该文件名与出错的文件名一样),复 制到用户电脑中,将“bak”修改为“Dwg”文件即 可打开。(PS:“bak”文件一般就在“Dwg”格式文件旁边)具体解决方法如下:打开我的电脑,点 击上面的“工具”选项,选择“文件夹选项”进入文件夹设置中。

    选择文件夹选项中的“查看”,在下面的选项列表中下拉,找到“隐藏已知文件类型的扩展名”一项,将选项前的勾去掉。

    接下来,在电脑桌面找到该无效文件。

    右键该文件,点 击“属性”进入属性,将属性中文件的“bak”后缀改为“ Dwg”。

    文件修改,点 击“确 定”按钮后退出,此时“bak”文件已经成为“Dwg”格式。

    然后在我们电脑桌面,启动CAD编辑器进入软件操作界面,在命令行输入“recover”命令后按回车键。

    弹出打开CAD修 复功能,在弹出来的文件夹选择中找到需要修 复的文件,点 击打开。即 可开始CAD开始修 复。

    待文件修 复完成后,即 可在CAD编辑器中打开图纸文件。如图所示:

    这就是存储问题导致的CAD制图软件显示图形文件无效,上述的解决方法非常的实用方便,希望能够帮助到大家。

    展开全文
  • 但是我发现我已经在Server.xml中设置过,想到这里我想到了上篇文章的文件重命名的问题,准备去写个filter去修改http响应头,但是我突然明白,SpringMVC应该会处理过,但是为什么无效呢,这种成熟的框架不应该会有bug...

    处理过程

    根据IE的F12中的log提示,是因为http头信息中的编码替换了html文件中的编码。我最初的思路是设置Tomcat默认编码,但是我发现我已经在Server.xml中设置过,想到这里我想到了上篇文章的文件重命名的问题,准备去写个filter去修改http响应头,但是我突然明白,SpringMVC应该会处理过,但是为什么无效呢,这种成熟的框架不应该会有bug存在,于是我尝试在SpringMVC的xml中配置SourceHttpMessageConverter等转换器,都无效。

    发现原因

    后来发现web.xml是配置了编码处理的, 内容如下:

    //第一个工具类中的下载方法:
        /**
         * 下载
         * @param request
         * @param response
         * @param fileName
         * @param downLoadPath
         * @param contentType
         * @throws IOException 
         * @throws Exception
         */
        public static void download(HttpServletRequest request,HttpServletResponse response,String fileName,String downLoadPath,String contentType) throws IOException{
            response.setContentType("text/html;charset=UTF-8");
            request.setCharacterEncoding("UTF-8");
            BufferedInputStream bis = null;
            BufferedOutputStream bos = null;    
            long fileLength = new File(downLoadPath).length();
    
            response.setContentType(contentType);
            response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
            response.setHeader("Content-Length", String.valueOf(fileLength));
    
            bis = new BufferedInputStream(new FileInputStream(downLoadPath));
            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);
            }
            bis.close();
            bos.close();
        }
    
    
    //第二个工具类中的主要关键代码:
        String filename = null;
        if(request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){
            filename = URLEncoder.encode(name, "UTF-8");
        }else{
            filename = new String(name.getBytes(),"ISO8859-1");
        }
        response.setHeader("Content-Disposition", "attachment;filename=" + filename);

    为了知道这样子到底会有什么问题,是不是只有IE会出现问题,其他浏览器会不会有其他的问题。抱着这些疑问,我找来了目前市面上用户量较多的几款主流的浏览器进行测试,包括:两个不同版本的IE11,Chrome,FireFox,Opera,360浏览器,搜狗浏览器等。经过我对下载的文件的各种文件名称使劲地折腾主要发现以下几个问题: 
    1.两个IE11在使用第一个方法下载文件时中文文件名都会乱码,而使用第二个方法下载时其中一个IE11中文不会乱码,另一个IE11则会乱码; 
    2.文件名中存在空格时两个IE11浏览器下载下来文件文件名空格会变成+号,其他浏览器没有这个问题; 
    3.火狐浏览器下载时遇到文件名中有空格时下载下来的文件的文件名第一个空格后面的文字都会丢失。 
    经过一番折腾发现原来我们大国产浏览器还是可以的,没有发现明显的问题;233333。 
    那么这些问题该如何解决呢?首先第一个问题,显然第一段代码并没有将IE浏览器过滤出来对文件名进行单独编码,而是统一采用ISO8859-1编码,这样如果文件名是英文的IE就不会出现任何问题,中文就会出现乱码,其他语言文字则不清楚,其他几款浏览器则没有任何问题,都能兼容。那第二段代码则首先对Http请求头中User-Agent参数进行了判断,通过MISE字段将IE浏览器过滤出来,对文件名进行单独UTF-8编码,所以中文文件名不会乱码了。那么问题来了,为什么两个IE11浏览器,其中一个中文不乱码,而另一个却乱码呢。经过对程序的单步调试,发现那个中文乱码的IE在进入这个方法后程序并没有跳入对文件名进行utf-8编码的方法,而是进入了else下面的那一行代码。那也就是说两个IE11的User-Agent参数中,其中一个有MISE关键字,而另一个则没有。通过查阅资料,原来微软在IE11之后在浏览器的User-Agent参数中去掉了MISE关键字,导致的结果是使用低版本的IE下载中文文件名文件时不会乱码,而采用大部分IE11及以上版本,包括Edge等都会出现中文乱码现象。难怪大家老是说IE很坑呢,IE在这种地方都埋好了坑,等着我们去踩,我也是醉了。 
    浏览器的User-Agent这个参数主要包含了一些操作系统版本,浏览器版本、内核等信息。 
    那个下载文件中文会乱码的IE的User-Agent参数如下: 
    IE11:Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko; 
    显然里面并没有MISE关键字,那么怎么办呢?通过对比几款不同浏览器的User-Agent参数,发现这里面有一个Trident关键字比较特别,是其他浏览器所没有的,那么解决方案来了,我们可以通过Trident关键字来进行对部分IE11的过滤了; 
    那么针对第二个问题中出现的空格变+号,则是因为URLEncoder函数在对字符串进行转码后将空格替换成了+号,IE就直接把+号显示出来了,解决方法是在对文件名进行转码后,使用replace方法将+号替换为%20即可,浏览器会将%20转换成空格输出。 
    对于第三个问题则是因为代码在set响应头时Content-Disposition参数的attachment;filename=等号后面文件名字符串没有用双引号括起来,火狐浏览器对于遇到文件名有空格时认为空格前的字符是一个完整的字符串,故下载下来文件时文件名就只剩下空格前的那几个字了。解决方法是在filename两边加上双引号并加反斜杠转义。具体的最终解决这些问题后经过测试兼容性比较好的代码如下:

    public static void download(HttpServletRequest request, HttpServletResponse response, String fileName, String downLoadPath, String contenType) throws Exception {
            response.setContentType("text/html;charset=UTF-8");
            request.setCharacterEncoding("UTF-8");
    
            BufferedInputStream bis = null;
            BufferedOutputStream bos = null;
    
            long fileLength = new File(downLoadPath).length();
    
            response.setContentType(contenType);
    
            String header = request.getHeader("User-Agent").toUpperCase();
            if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {
                fileName = URLEncoder.encode(fileName, "utf-8");
                fileName = fileName.replace("+", "%20");    //IE下载文件名空格变+号问题
            } else {
                fileName = new String(fileName.getBytes(), "ISO8859-1");
            }
    
            response.setHeader("Content-disposition", "attachment; filename=\"" + fileName + "\"");
            response.setHeader("Content-Length", String.valueOf(fileLength));
    
            bis = new BufferedInputStream(new FileInputStream(downLoadPath));
            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);
            }
            bis.close();
            bos.close();
        }

    或者,使用下面这段代码也可以处理乱问题,代码如下:

    try {
           String fileName = attachmentFile.originalName();
           String userAgent = request.getHeader("user-agent").toLowerCase();  
           if (userAgent.contains("msie") || userAgent.contains("like gecko") ) {  
                // win10 ie edge 浏览器 和其他系统的ie  
                fileName = URLEncoder.encode(fileName, "UTF-8");  
           } else {  
                //其他的浏览器
                fileName = new String(fileName.getBytes("utf-8"), "iso-8859-1");  
           }  
           response.setCharacterEncoding("utf-8");
           response.setContentType("multipart/form-data");
           response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
           String path = attachmentFile.path();
           InputStream inputStream = new FileInputStream(new File(path));
    
           OutputStream os = response.getOutputStream();
           byte[] b = new byte[2048];
           int length;
           while ((length = inputStream.read(b)) > 0) {
               os.write(b, 0, length);
           }
    
             // 这里主要关闭流。
              os.close();
    
              inputStream.close();
        } catch (FileNotFoundException e) {
              e.printStackTrace();
        } catch (IOException e) {
              e.printStackTrace();
        }
    

     

    展开全文
  • /* 构建生成文件名 targetname:12时10分23秒_username_记录.rtf */ Date current = new Date(); SimpleDateFormat sdf = new java.text.SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); String targetname ...
  • 7.上传文件保存文件名修改为GUID,数据库相印字段长度至少需要32位字符; 8.配置页面数据库表增加视图的显示; 9.增加省市县联动控件(包括省市县3级联动,省市2级联动和省市(县级可选)联动),通过使用Request...
  • 阅读工具 开卷有益

    2012-03-31 14:07:03
    修改:设置U盘模式时,系统崩溃的Bug(M8) 9. 修改:全屏像素滚屏、拖拽,百分比进度没有更新的Bug 10. 修改:设置界面变灰效果无效的Bug 11. 修改:部分WM机型电量不更新的Bug ----------------------- V3.1...
  • 手机 pdf 阅读器

    2009-02-12 23:00:29
    文件管理器中新增转换UMDTXT的功能(解开操作,解开2无效!) 增加了编辑功能(尽管没有限制文件大小,但请别编辑过大的文件,另外,为了提高速度,不进行全文排版,有时候表现可能会有些不习惯),以后会进一步完善 ...
  • powerbuilder

    2013-11-21 17:11:48
    参数printjobnumber:用PrintOpen()函数打开的打印作业号x:integer类型,指定要打印屏幕图像左上角在打印页上的x坐标,以千分之一英寸单位y:integer类型,指定要打印屏幕图像左上角在打印页上的y坐标,以千分...
  • 2. 安装时为什么显示要使用很多的权限? 实际上密码管家自身只请求了两个权限,开机启动权限(开机时自动运行)和存储卡读写权限(导出和导入),别的权限皆为嵌入的广告SDK所要求使用的。 【特别建议】 1. 无论是新...
  • 经常有人会问 为什么我增加了.gitignore里的规则却没有效果</strong> ,那是因为<code>.gitignore文件只能作用于未跟踪的文件( <strong>Untracked Files</strong> ),也就是从来没有被Git记录过的文件。所以要先从Git...
  • 如果系统检测到无效或非标准分区表标记,将提示用户是否继续执行该命令。除非您访问驱动器有问题,否则不要继续进行。向系统分区写入新的主引导记录可能破坏分区表并导致分区无法访问。  format  将指定的驱动器...
  • //获取路径中的文件名(带后缀的) ,fz的值 “----.kgtemp” string fss = System.Text.RegularExpressions.Regex.Replace(fz, "[.kgtemp]", "");//去掉.kgtemp后缀名后赋值给fss if (!Directory.Exists...
  • multiCCL_f

    热门讨论 2010-10-19 15:49:46
    若以上修改还是无效,则试试修改干扰码。 ;---------------------------- ;另外也请看看更新记录,里面也有部分说明 ; ; 同时也请帮助统计定位一个样本特征码所需的时间,大致记录下就行 ; 结果请反馈到: ...
  • 这样,因为w 是在if 语句里定义的,所以当if 语句执行完后它就无效了。这样 导致的后果就是,按下enterBtn 后,主界面窗口一闪就没了。如果此时对程序 改动了,再次点击运行时,就会出现error: collect2: ld ...
  • #vi Makefile (将 smdk2410修改为 fs2410) #cd ../../include/configs #cp smdk2410.h fs2410.h 退回 U-Boot根目录:#cd ../../ (4)建立编译选项 #vi Makefile smdk2410_config : unconfig @$(MKCONFIG)...
  • 会计理论考试题

    2012-03-07 21:04:40
    C、每一类都不以另一类基础 D、后者以前者基础 20.计算机辅助设计软件主要用于___B___。 A、文字处理 B、制图和设计 C、实时控制 D、科学计算 21.计算机操作系统的作用是 __D___ 。 A、控制计算机的硬件设备 B、...
  • 什么是实用技巧,就是那种能经常用得着的值得收藏起来的应用方法。本文 中笔者就将向大家介绍35种Windows操作系统技巧,招招实用,招招值得你把 他保存到你的电脑中或者把这篇文章的地址收藏到收藏夹里。  1、...
  • 多媒体教室

    2013-06-14 08:10:31
    图形按钮区按钮亮黑色时表示此功能可以使用,灰色时表示此功能不能使用,凹下状态表示该功能正在执行。当按下某按钮执行某一功能后,再按 Break 键使这一正在执行的功能停止执行。可以使用系统设置下热键设置...
  •  修改商品时,点击上传大小图片,可以选择是否覆盖原旧图片,覆盖后的图片文件名不变,这样可以节约宝贵的网络空间,减少冗余数据的产生。 十四、支持商品上、下架管理功能 新增商品上架、下架管理功能,对于库存...
  • 电脑蓝屏对照码

    2019-05-05 14:16:40
    3.调试端口告诉用户内存转储映像是否写到磁盘商了, 使用内存转储映像可以确定发生问题的性质, 还会告诉用户调试信息是否被传到另一台电脑商, 以及使用了什么端口完成这次通讯. 不过, 这里的信息对于普通用户来说, ...
  • 网趣商城ASP源码

    2013-02-17 17:11:35
     修改商品时,点击上传大小图片,可以选择是否覆盖原旧图片,覆盖后的图片文件名不变,这样可以节约宝贵的网络空间,减少冗余数据的产生。 十四、支持商品上、下架管理功能 新增商品上架、下架管理功能,对于库存...
  • WIN XP蓝屏代码大全

    2013-08-08 12:29:21
    3.调试端口告诉用户内存转储映像是否写到磁盘商了, 使用内存转储映像可以确定发生问题的性质, 还会告诉用户调试信息是否被传到另一台电脑商, 以及使用了什么端口完成这次通讯. 不过, 这里的信息对于普通用户来说, ...
  • 45.计算机不能保存时间修改 46.BIOS设置不能保存 47.CMOS电池没电 48.CMOS掉电导致无法启动 49.CMOS电池易掉电 50.使计算机自动开机 51.计算机通电后自动开机 52.设置CMOS密码 53.开机密码设置无效 54.不拆机箱清除...
  • 14.1 Windows为什么会崩溃 845 14.2 蓝屏 846 14.3 崩溃转储文件 849 崩溃转储的生成 852 14.4 Windows错误报告 853 14.5 在线崩溃分析 854 14.6 基本的崩溃转储分析 855 Notmyfault 855 基本的崩溃转储分析 856 ...
  • 3.2.4 为什么要避简就难 47 3.3 调查问卷 48 3.4 问卷调查结果的处理和显示 49 3.4.1 mysql界面与mysqli界面 49 3.4.2 建立与数据库的连接 49 3.4.3 对数据进行处理并把它存入数据库 49 3.4.4 显示问卷调查的...
  • 它使物理网络拓朴和协议透明化,这样网络上的用户可以访问任何资源,而不需要知道资源在什么地方,或物理上它是如何连接到网络上的。% t! G+ S" E# e9 q 2 \% m) N4 I- I* v4 f. t(2)集中式管理: * [. Y& e' Q6 @,...
  •  3、对于像被"熊猫烧香"感染的EXE文件,上述两种手工处理无效,因为无法手工清除受病毒感染的文件中的病毒,这时只能向杀毒软件厂商提供病毒样本,等待杀毒软件升级后再进行处理,或重新安装操作系统。  二、 ...
  • 为什么挂等等。测试框架通常提供TDD(测试驱动开发)或BDD(行为驱动开发)的测试语法来编写测试用例,关于TDD和BDD的对比可以看一篇比较知名的文章...
  •  本书针对大多数日常的oracle database 11g数据库管理任务,全面覆盖dba行业知识,并将理论与实践相结合,旨在初中级dba提供高效运行数据库所需的方方面面的知识,帮助他们从oracle公司发行的大量资料中找到自己...
  • 你可能会好奇为什么要这么做? 因为这样可以给 vendor 生成稳定的 hash 值,每次修改业务代码(pageA),这段初始化时代码就会发生变化,那么如果将这段初始化代码放在 vendor 文件中的话&#...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

为什么修改文件名无效