尝试从javax.servlet.http.Part getSubscribedFileNam()检索时没有此类方法

问题描述 投票:0回答:1

好的,我正在使用 javax.servlet-api-3.1.0。当我展开时,它清楚地显示 Part.class 和“getSubscribedFileName()。

但是我收到这个错误...

exception 
javax.servlet.ServletException: java.lang.NoSuchMethodError:       javax.servlet.http.Part.getSubmittedFileName()Ljava/lang/String;
javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Eclipse java 代码中没有显示错误。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui"
    xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:body>
        <ui:composition>
        <div id="colBottom">
        <h:panelGroup>
             <h:inputFile id="uploadFileId" image="/images/open.gif" value="#    {mainBean.uploadFile}"/>
             <h:commandButton value="Upload" action="#{mainBean.clickUpload}"/>
        </h:panelGroup>
        </div>
        </ui:composition>
    </h:body>
</html>

下面是尝试解析该部分的java代码。奇怪的是,我可以打开输入流并转换为文本。我需要能够确定该文件是否是 .zip 文件,以便 chilkat 可以解压缩它。

import javax.servlet.http.Part;

@ManagedBean(name="mainBean")
@SessionScoped 
public class MainBean {

    Part uploadFile;
    String notesText;

    public MainBean() {
    }

    public String clickUpload() {
        try {
            String fileName = Paths.get(getUploadFile().getSubmittedFileName()).getFileName().toString();           
            long uploadFileSize = getUploadFile().getSize();
            InputStream is = getUploadFile().getInputStream();
            byte[] uploadBytes = new byte[(int)uploadFileSize];
            int bytesRead = is.read(uploadBytes);
            setNotesText(new String(uploadBytes));
            is.close();
        
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
        return "display";
    }
java servlets
1个回答
0
投票

我还是不明白为什么这个方法不起作用,但是

str = getUploadFile().getContentType();

...显示文件类型“application/x-zip-compressed”

这就是我所需要的。

© www.soinside.com 2019 - 2024. All rights reserved.