精华内容
下载资源
问答
  • 项目通过java接口来下载文件,发现下载office文件时,打开都不正常,比如下载office文件打开会报“word在 XX.docx发现无法读取内容是否恢复此文档的内容”。但如果通过nginx映射来下载,可以正常打开。 解决...

    问题描述:

    项目通过java接口来下载文件,发现下载office文件时,打开都不正常,比如下载office文件打开会报“word在 XX.docx 发现无法读取的内容。是否恢复此文档的内容”。但如果通过nginx映射来下载,可以正常打开。

    解决方法:

    研究后发现,是因为没有设置Content-Type,其实每种office文件都有对应的Content-Type。可参考:https://www.jianshu.com/p/4b09c260f9b2?from=groupmessage

    修改后的代码如下:

        private final static Map<String, String> CONTENT_TYPE_MAP = new HashMap<>();
    
        static {
            CONTENT_TYPE_MAP.put("doc", "application/msword");
            CONTENT_TYPE_MAP.put("dot", "application/msword");
            CONTENT_TYPE_MAP.put("docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
            CONTENT_TYPE_MAP.put("dotx", "application/vnd.openxmlformats-officedocument.wordprocessingml.template");
            CONTENT_TYPE_MAP.put("docm", "application/vnd.ms-word.document.macroEnabled.12");
            CONTENT_TYPE_MAP.put("dotm", "application/vnd.ms-word.template.macroEnabled.12");
            CONTENT_TYPE_MAP.put("xls", "application/vnd.ms-excel");
            CONTENT_TYPE_MAP.put("xlt", "application/vnd.ms-excel");
            CONTENT_TYPE_MAP.put("xla", "application/vnd.ms-excel");
            CONTENT_TYPE_MAP.put("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            CONTENT_TYPE_MAP.put("xltx", "application/vnd.openxmlformats-officedocument.spreadsheetml.template");
            CONTENT_TYPE_MAP.put("xlsm", "application/vnd.ms-excel.sheet.macroEnabled.12");
            CONTENT_TYPE_MAP.put("xltm", "application/vnd.ms-excel.template.macroEnabled.12");
            CONTENT_TYPE_MAP.put("xlam", "application/vnd.ms-excel.addin.macroEnabled.12");
            CONTENT_TYPE_MAP.put("xlsb", "application/vnd.ms-excel.sheet.binary.macroEnabled.12");
            CONTENT_TYPE_MAP.put("ppt", "application/vnd.ms-powerpoint");
            CONTENT_TYPE_MAP.put("pot", "application/vnd.ms-powerpoint");
            CONTENT_TYPE_MAP.put("pps", "application/vnd.ms-powerpoint");
            CONTENT_TYPE_MAP.put("ppa", "application/vnd.ms-powerpoint");
            CONTENT_TYPE_MAP.put("pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation");
            CONTENT_TYPE_MAP.put("potx", "application/vnd.openxmlformats-officedocument.presentationml.template");
            CONTENT_TYPE_MAP.put("ppsx", "application/vnd.openxmlformats-officedocument.presentationml.slideshow");
            CONTENT_TYPE_MAP.put("ppam", "application/vnd.ms-powerpoint.addin.macroEnabled.12");
            CONTENT_TYPE_MAP.put("pptm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12");
            CONTENT_TYPE_MAP.put("potm", "application/vnd.ms-powerpoint.presentation.macroEnabled.12");
            CONTENT_TYPE_MAP.put("ppsm", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12");
        }
    
    
        
        @ApiOperation(value = "文件下载接口", httpMethod = "GET", notes = "文件下载接口")
        @RequestMapping("/downloadFiles/{md5}.{format}")
        @ResponseBody
        public AjaxResult downloadFiles(HttpServletResponse response,
            @PathVariable String md5, @PathVariable String format){
            File file = new File(this.getFilePath()+md5+".data");
            if(!file.exists()) {
                return getResult(1, "文件不存在");
            }
            try(
                FileInputStream fileInput = new FileInputStream(file);
                BufferedInputStream bufferedInput = new BufferedInputStream(fileInput);
            ) {
                response.setHeader("Accept-Ranges", "bytes");
                response.setHeader("Content-Length", file.length()+"");
                response.setHeader("Content-Type", CONTENT_TYPE_MAP.get(format));
                response.setDateHeader("Last-Modified", file.lastModified());
                response.setCharacterEncoding(null); // 设置为null,否则Content-Type会带上charset=UTF-8
                byte[] buffer = new byte[1024];
                OutputStream os = response.getOutputStream();
                int len = 0;
                while ((len = bufferedInput.read(buffer)) > 0) {
                    os.write(buffer, 0, len);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return getResult(0, null);
        }

     

    展开全文
  • .docx的文档损坏打不开,使用各种百度到的修复办法/修复工具/在线修复网页都无法解决。 尝试修改后缀/转换格式/使用wps打开再另存为,失败。 解决方法 经过查找资料,docx/doc文件的本质,是一个装了很多.xml文件...

    问题

    .docx的文档损坏打不开,使用各种百度到的修复办法/修复工具/在线修复网页都无法解决。
    尝试修改后缀/转换格式/使用wps打开再另存为,失败。
    在这里插入图片描述

    在这里插入图片描述

    解决方法

    经过查找资料,docx/doc文件的本质,是一个装了很多.xml文件的压缩包,用压缩文件工具打开可以看到。
    在这里插入图片描述解压缩,报错哪部分坏掉了,要做的就是从别的完好的docx文件里解压缩出来一个对应的替换进去,就好了。

    展开全文
  • 0, len) 实现的,但是,这里的第一个方法中的length默认为buffer.length,永远为1024,这是不对的,所以需要采用第二个实现,手动读取和指定长度length,否则会读取空byte到文件中,出现不可读的内容。 最终方案 ...

    问题描述

    Excel生成在生成流并且打包到.zip文件的时候,从网络上copy了一段代码,自己修改了部分,代码如下:

        public void saveAsZip(String xlsxName, OutputStream output) throws ExcelException {
            if (getWorkbook() == null || output == null) {
                throw new ExcelException("Workbook is null or output is null");
            }
            InputStream inputStream;
            try (ZipOutputStream zos = new ZipOutputStream(output);
                 FileOutputStream outTmp = new FileOutputStream(xlsxName);
            ) {
                getWorkbook().write(outTmp);
                outTmp.close();
                inputStream = new FileInputStream(xlsxName);
                zos.putNextEntry(new ZipEntry(xlsxName));
                byte[] buffer = new byte[1024];
                int len;
                int i = 0;
                while ((len = inputStream.read(buffer)) > 0) {
    //                zos.write(buffer, 0, len);
                    zos.write(buffer);
                }
                zos.closeEntry();
                zos.close();
                inputStream.close();
                output.flush();
            } catch (Exception e) {
                throw new ExcelException(e);
            }
        }
    

    但是生成的xlsx通过excel2010打开一直报错
    在这里插入图片描述

    解析

    暂且不论上面的代码是否有更好的实现,这个代码的问题在于:

    zos.write(buffer);
    

    虽然,

    write(buffer);
    

    的内部是

    write(buffer, 0, len)
    

    实现的,但是,这里的第一个方法中的length默认为buffer.length,永远为1024,这是不对的,所以需要采用第二个实现,手动读取和指定长度length,否则会读取空byte到文件中,出现不可读的内容。

    最终方案

    1. 原始的zipoutputStream流
        public void saveAsZip(String xlsxName, OutputStream output) throws ExcelException {
            if (getWorkbook() == null || output == null) {
                throw new ExcelException("Workbook is null or output is null");
            }
            try (ZipOutputStream zos = new ZipOutputStream(output);
            ) {
                zos.putNextEntry(new ZipEntry(xlsxName));
                getWorkbook().write(zos);
                zos.closeEntry();
                output.flush();
            } catch (Exception e) {
                throw new ExcelException(e);
            }
        }
    
    1. apache的打包流:
     public void saveAsZip(String xlsxName, OutputStream output) throws ExcelException {
            if (getWorkbook() == null || output == null) {
                throw new ExcelException("Workbook is null or output is null");
            }
            try (BufferedOutputStream bufferedOutput = new BufferedOutputStream(output);
                 ArchiveOutputStream archiveOutputStream = new ArchiveStreamFactory().createArchiveOutputStream(ArchiveStreamFactory.ZIP, bufferedOutput);
            ) {
                ArchiveEntry archiveEntry = archiveOutputStream.createArchiveEntry(new File(xlsxName), xlsxName);
                archiveOutputStream.putArchiveEntry(archiveEntry);
                getWorkbook().write(archiveOutputStream);
                archiveOutputStream.closeArchiveEntry();
                archiveOutputStream.finish();
                archiveOutputStream.flush();
            } catch (Exception e) {
                throw new ExcelException(e);
            }
        }
    

    总结

    关于流的读写由于平常用到的非常少,所以比较生疏,基础不牢,希望再用的时候能更加小心点。

    展开全文
  • EXCEL 损坏,无法打开或修复,如何修复,打开。对于程序出现而受到损坏的簿,用户可对其进行手动恢复的操怍,主要是在“打开”对话框中进行操作,其具体操作为:2步骤一、启动Excel2010程序,在“文件”选项卡中单击...

    该文件破坏程度太大,不能进行修复。Excel尝试恢复公式和值,但有些数据可能已经丢失或损坏怎么办?

    电子表据一般是很容易恢复数据的,乱能恢复。

    EXCEL 损坏,无法打开或修复,如何修复,打开。

    对于程序出现而受到损坏的簿,用户可对其进行手动恢复的操怍,主要是在“打开”对话框中进行操作,其具体操作为:

    2

    步骤一、启动Excel2010程序,在“文件”选项卡中单击“打开”按钮,打开“打开”对话框,选择需要修复的工作薄,单击“打开”按钮右侧的下拉按钮,在弹出的下拉菜单中选择“打开并修复”命令,如图所示:

    3

    步骤二、在打开的提示对话框中单击“修复”按钮,如图所示:

    4

    将打开“修复到[工作簿名称].xlsx”对话框,单击“关闭”按钮,即打开并修复选择的工作簿。若单击“单击查看修复记录”栏中的超链接,可查看详细的修复信息,如图所示:

    END

    方法二、自动修复因程序故障损坏的工作薄

    Excel具备自动修复因程序故障受损的工作薄的功能,在打开受损工作簿时,Exccl会自动启动“文件恢复”模式,重新打开并进行修复工作。

    在打开的工作薄操作界面的左侧显示“文档恢复”窗格,其中列出了因程序出现故障而关闭的所有工作簿,鼠标光标移动到对应工作薄上,单击右侧的按钮,在弹出的下拉菜单中选择“显示修复”命令可显示自动修复的内容,选择“打开”命令则打开工作簿,如图所示:

    3

    技能点拨:如果工作簿的数据被损坏,在打开工作簿时会弹出提示信息,提示工作簿发现不可读取的内容,单击提示对话框中的“是”按钮,将打开“修复到[工作薄名称]xlsx”对话框,其中说明该工作簿已被修复并将不可读取的数据删除,单击“关闭”按钮打开修复的文件。

    4

    另外,如果程序出现故障后,再次打开工作薄时并没有显示“文档恢复”窗格,可能是在对工作簿进行操作时禁用了该工作簿的文档恢复,如果要启用文档恢复功能,可在“文件”选项卡中单击“选项”按钮,打开“Excel选项”对话框,在其中的“保存”选项卡中取消选中“仅禁用此工作薄的自动恢复”复选框即可。

    excel为什么老显示文件已损坏

    步骤/方法

    1、打开文示损坏,点击确定按钮,进入空白程序。

    2、在空白程序左上角点击文件按钮,如下图所示

    3、在文件菜单中点击选项,如下图所示

    4、在选项中选择信任中心,如下图所示

    5、在信任中心选择信任中心设置按钮,如下图所示

    6、在信任中心设置边栏选择受保护的视图,如下图所示

    7、将下图所示的三个复选框去掉勾,点击确定按钮即可,重新打开,可以正常使用了!

    急!!在EXCEL表格中发现不可读取的内容,导致文件内容丢失,怎样修复

    这该文件是wps创建的,需要在wps中打开存为excel的文件格式即可。

    :电脑、wps。

    1、打开电脑上的wps软件。

    2、进入软件后,点击软件界面左边的打开图标。

    3、选中需要处理的文件后打开。

    4、打开该文件后,点击界面左上角的文件图标。

    5、然后点击另存为,再选择需要保存为哪种格式,按excel版本选择需要保存为哪个版本的文件。

    6、将文件重命名,再保存即可,保存后的文件再从excel里打开即可。

    Excel文件打不开 显示文件损坏了 怎么修复呀

    可以偿试用打开修复功能。

    1、新建一个空白工作表。

    2、点击工具栏上的打开按钮或按CTRL O

    3、选中需修复的文档。

    4、不要直接点打开,要点打开旁边的向下小箭头,选择“打开并修复”。

    救命啊!excel表格损坏无法打开修复后成乱码怎么拯救啊?

    .xls不一致,应该直接点是,打开就行了。

    .xls是OFFICE2003版本用的格式,从OFFICE2007版本以后,一般用.xlsx格式了。

    提示.xls格式不一致直接点是,打开,

    如果以后不想再弹这个提示,可以点左上角的文件,

    文件---另存为---保存类型选择为:Excel工作簿(*.xlsx)

    该文件破坏程度太大,不能进行修复。Excel会尝试恢复公式和值,但有些数据可能已经丢失或损坏。

    用软件“雨过天晴”修复软件 即可

    展开全文
  • 求解磁盘结构损坏且无法读取恢复这时我们该如何恢复我们丢失的数据呢?这个时候一定要记住不要再进行读写操作,以防数据被覆盖永久丢失,并且第一时间运用专业软件恢复,因为数据丢失时间越短找回的可能性越大。 ...
  • Hugh 于2020/08/25更新 数据恢复摘要硬盘作为电脑的重要组成部分,随着使用时间的延长,对硬盘的损坏也都是越来越大的。如果在使用过程中,不小心误删除,或者误清空硬盘中数据文件的话,我们该怎么办呢?移动硬盘的...
  • U盘故障恢复--“文件或目录损坏且无法读取”故障现象原因分析 故障现象 当进入“我的电脑”后会发现出现问题的硬盘中的分区会无法显示相关信息:如容量大小、可用空间等。双击盘符时出现“无法访问 X:文件或目录...
  • 4、将sd卡安装到其他设备,以保证sd卡是有效的。1、若是电脑和手机都不能读取SD卡,就可以肯定的SD卡损坏了;2、若是逻辑性损坏的话可以用...(3)、然后试探性的使用属性中的工具,点击开始检查,发现无法检查磁盘...
  • 例如: ORA-00376: file 28 cannot be read at this time ORA-01110: data file 28: ‘/h04/usupport/app/oracle/oradata/v817/test.dbf’ 在这里,test.dbf 是Oracle无法读取的数据文件名。 可能原因及解决方案: ...
  • 其中常见的问题之一就是分区无法打开,导致设备无法正常访问,当我们将设备连接至电脑后,无法打开盘符,且系统会跳出对话框提示“位置不可用,无法访问G:\,文件或目录损坏且无法读取”等内容。 这时候我们右击...
  • sd卡是一种基于半导体快闪记忆器的新一代记忆设备,被广泛应用在手机、数码相机等便携式装置中,但有时候相机sd卡会出现无法读取的现象,这是什么原因?里面的数据还能恢复吗?下面就一起来了解下。 相机sd卡无法...
  • “文件或目录损坏且无法读取”怎么办?呢?很多人都不知道该怎么办,其实我们只需要进行修复就可以了,具体该如何修复,下面小编来详细的讲解一下。 “文件或目录损坏且无法读取”怎么办?呢?很多人都不知道该怎么办...
  • 数码相机SD卡无法读取怎么办?SD卡被广泛应用于数码相机、手机等便携式设备上,里面必然存储了不少照片,但有时候也会发生一些故障,如相机SD卡连接电脑时无法读取,这是什么原因呢? 当相机SD卡出现无法读取问题...
  • 很幸运的是那些丢失的文件都被顺利找回来了,当我以为一切都没问题的时候突然发现恢复回来的文件竟然无法读取/打不开!请问有人能教我怎么解决这个问题吗? 你也遇到过类似的情况吗?别担心!你不是唯一一个发现文件...
  • 通过FireWire修复CF文件损坏的工具立即下载硬盘上出现“文件或目录损坏且无法读取”的问题. 首先,不要考虑格式化该分区,因为成本太高,并且备份文件也很麻烦.故障现象无论是移动硬盘还是USB闪存驱动器,包括本地...
  • Word文档内容丢失恢复在我们使用Word编辑文档的时候,相信很多人都遇到过以下几种情况:1.电脑突然崩溃关机或者蓝屏,文档没有来得及保存;2.新建的文档忘记保存;3.修改后的文档忘记保存;4...
  • 组策略出现"windows无法读取模板信息"是因为删除了Win2000/XP/2003中的guest账号。解决办法:1.注册表有备份。很简单,恢复备份就是了。组策略出现“windows无法读取模板信息”是因为删除了Win2000/XP/2003中的guest...
  • 但要是我们的手机SD卡无法读取读了该怎么办呢?SD卡里的应用、照片之类的也都无法打开了。今天小编就来给小伙伴们说说手机SD卡无法读取读这个问题的解决方法。我们在生活当中经常都会遇到各种各样的问题,但尽管如此...
  • 吴川华南区技术负责人概要“文件或目录已损坏且无法读取”错误通常是出现在USB、SD卡、外置硬盘中。修复此类问题其实很简单,本文将介绍两种快速的解决方法并能安全保护磁盘数据。有用户反映在Windows电脑中打开USB...
  • 新买的M1 MacBookAIr ,不希望移动硬盘里面的内容导出或者抹除,遇到最大的问题就是无法正常读取/写入NTFS移动硬盘。 NTFS 格式磁盘在 Mac 上能读但是无法写入数据。通常我们安装一个 NTFS 支持软件就可以解决。这...
  • 位置不可用无法访问磁盘结构损坏且无法读取说明这个盘的文件系统结构损坏了。碰见位置不可用无法访问磁盘结构损坏且无法读取如何解决?具体恢复方法可以看正文了解(不格式化的恢复方法) 工具/软件:光明数据恢复...
  • 移动硬盘无法访问 “文件或目录损坏且无法读取” 怎么办?双击移动硬盘盘符打不开,提示“无法访问,文件或目录结构损坏且无法读取”怎么办?移动硬盘数据还能恢复吗?今天小编就和大家聊一聊移动硬盘文件或目录结构...
  • 有不少朋友在打开U盘的时候,遇到“磁盘结构损坏且无法读取”这一情况。U盘提示磁盘结构损坏且无法读取怎么办?今天快启动编辑要和大家分享下方法。  1、系统的桌面左下角都有一个开始菜单按钮。点击后,可以看到...
  • 平时在电脑上进行存储文件时,如果遇到文件或目录损坏且无法读取的情况时,按win+r打开运行,输入cmd,回车,弹出管理命令窗口,这里以F盘为例,在输入框中输入chkdsk f:/f,f为要修复的盘符,回车即可 ...
  • 2019-08-07 14:04:57U盘设备大家都比较熟悉了,正常情况下,电脑插入U盘后会自动识别读取数据,然后在打开U盘数据进行操作。但是有用户反映将U盘插入win10系统后竟然无法识别,难道是U盘设备坏了,但是在...2018-06-...
  • 原标题:碰到“照片无法读取”,2种方法教你轻松修复受损照片日常生活中,如果我们发现无法在计算机上正常查看照片, 这就表示该照片无法读取。导致这种情况发生的原因有很多,可能与软件相关,而最坏的情况是照片...
  • 您可能会发现该设备不可访问,或者在连接设备时可能会遇到诸如“此计算机无法读取您插入的磁盘”之类的错误消息。您如何解决此类错误?是否可以再次访问无法读取的USB上的数据?让我们在本文中了解更多信息。继续...
  • 相关工作人员所说的波折和紧张是因为上周含有部分素材的一张CFAST Lexar 3600X存储卡突发损坏了,无法正常识别读取,拍摄机器是ARRI ALEXA mini,4K 的MOV素材。 情况紧急,服务商专门赶去外地把卡取回杭州送过来...
  • 在硬盘上出现"文件或目录损坏且无法读取"问题,首先不要想到格式化那个分区,因为代价太高,并且要备份文件,太麻烦了.故障现象不管是移动硬盘还是优盘,包括本地电脑上的硬盘分区,双击打开时,提示:“无法打开H盘 ,...
  • U盘是我们常用的数据随身携带的存储方式,在没有弹出U盘的情况下,直接拔出U盘,这类操作很容易造成U盘的损坏,那么U盘文件或目录损坏且无法读取怎么解决呢?下面装机之家小编来分享下U盘文件或目录损坏且无法读取的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 422,581
精华内容 169,032
关键字:

发现无法读取的内容是否恢复