关于07版导入失败的问题

关于07版导入失败的问题

title=刚发的
java.io.FileNotFoundException: D:\tomcat\apache-tomcat-8.5.37\temp\upload_c14002d4_3754_4f23_bd87_59054ef26a33_00000003.tmp (系统找不到指定的文件。)
	at java.io.FileInputStream.open0(Native Method)
	at java.io.FileInputStream.open(FileInputStream.java:195)
	at java.io.FileInputStream.<init>(FileInputStream.java:138)
content=null
	at org.apache.commons.fileupload.disk.DiskFileItem.getInputStream(DiskFileItem.java:206)
	at com.imooc.service.WordService.imp(WordService.java:45)
	at com.imooc.servlet.ImportWordServlet.doPost(ImportWordServlet.java:31)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:745)

word为空,说什么文件未找到

package com.imooc.service;

import com.imooc.dto.ImportWordParamDto;
import com.imooc.dto.ImportWordResultDto;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.poifs.filesystem.OfficeXmlFileException;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;

import java.io.IOException;
import java.util.List;

public class WordService {
    public ImportWordResultDto imp(ImportWordParamDto dto) {
        //03版后缀为doc,07版为docx
        //返回给jsp的结果
        ImportWordResultDto result = new ImportWordResultDto();
        result.setTitle(dto.getTitle());
        //创建03版对象
        HWPFDocument doc = null;
        try {
            //创建doc文档
            doc = new HWPFDocument(dto.getWord().getInputStream());
            result.setContent(doc.getDocumentText().replace("\r", "<br>"));
        } catch (OfficeXmlFileException oe) {
            System.out.println("这可能是一个07版的word");
        } catch (Exception e) {
            result.setMsg("这可能不是一个word");
        } finally {
            if (doc != null) {
                try {
                    doc.close();
                    //如果是03版则返回,否则执行下面的代码
                    return result;
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }


        //创建07版word
        XWPFDocument docx = null;
        try {
            docx = new XWPFDocument(dto.getWord().getInputStream());
            //创建段落list
            List<XWPFParagraph> paragraphList = docx.getParagraphs();
            //创建用于存放段落内容的字符串
            StringBuilder content = new StringBuilder();
            for (int i = 0; i < paragraphList.size(); i++) {
                //如果不是第一段就换行
                if (i != 0) {
                    content.append("<br>");
                }
                content.append(paragraphList.get(i).getText());
            }
            result.setContent(content.toString());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (docx != null) {
                try {
                    docx.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return result;
    }
}

断点如下:

http://img1.sycdn.imooc.com//climg/5c65549300019e7916020403.jpg

http://img1.sycdn.imooc.com//climg/5c6554a60001c3ae14330302.jpg

http://img1.sycdn.imooc.com//climg/5c6554b30001d48f12900220.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 给大佬递茶 2019-02-15 12:02:39

http://img1.sycdn.imooc.com//climg/5c66395a0001498c13550377.jpg

dto.getWord().getInputStream()为空呀,是不是因为在RequestUtil中把word已经保存到upload下呀,那里确实用word,说明已经保存了,就是在这里通过流获取不到

  • 同学的代码没有问题,报错提示显示文件找不到,建议同学导入老师提供的word模板试试,如果不行,下载老师的源码对照一下。祝:学习愉快~
    2019-02-15 15:48:54
好帮手慕阿满 2019-02-15 10:03:37

报错提示显示找不到指定的文件,问一下同学导入的是word文件吗?导入07版失败,导入03版的word是正常的吗?建议同学反馈一下上述情况。祝:学习愉快~

  • 提问者 给大佬递茶 #1
    导入03 版正常07版错误。是正常的呀docx呀
    2019-02-15 10:10:02
  • 好帮手慕阿满 回复 提问者 给大佬递茶 #2
    试了同学的代码,并没有什么问题,建议同学导入老师提供的07版word文档试试,在教辅区,静态项目资源中有。祝:学习愉快~
    2019-02-15 10:57:44
  • 提问者 给大佬递茶 回复 好帮手慕阿满 #3
    if (ServletFileUpload.isMultipartContent(request)){ //调用解析request的方法获得通用参数 ParamDto dto= RequestUtil.parseRequest(request); //通过通用参数的值得到真正的参数 ImportWordParamDto paramDto = new ImportWordParamDto(); paramDto.setTitle(dto.getParamMap().get("title")); paramDto.setWord(dto.getFileMap().get("word"));调试显示这里为空,见鬼
    2019-02-15 11:49:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师