在jsp中下载文件

时间:2012-11-05 05:01:31

标签: jsp struts2 struts struts-1

我在jsp中使用以下代码从服务器下载文件。我正在使用struts框架。如果文件不存在,我想显示警告消息(使用以下代码,如果文件不存在,则以不可读的格式下载)。我不知道如何实现这一点。如果有人对此有所帮助,我将非常感激。

jsp内容:

<a href='<%=url%>/download.jsp?Path=<%=filePath%>&fileName=${CustomerRegistrationForm.customerId}_certificate.pdf' style="text-decoration:none"><font color="#0000FF">Click Here</font></a>

1 个答案:

答案 0 :(得分:2)

点击网址而不是href发送ajax请求。如果200表示文件存在且可以下载,则检查响应状态。如果文件不存在,您将收到404错误状态。在这种情况下,您可以提醒消息。

<body>
    <script language="javascript" type="text/javascript">
        function ajaxFunction(){
            var ajaxRequest;  // The variable that makes Ajax possible!
            try{
                // Opera 8.0+, Firefox, Safari
                ajaxRequest = new XMLHttpRequest();
            } catch (e){
                // Internet Explorer Browsers
                try{
                    ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try{
                        ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e){
                        // Something went wrong
                        alert("Your browser broke!");
                        return false;
                    }
                }
            }
            // Create a function that will receive data sent from the server
            ajaxRequest.onreadystatechange = function(){
                if(ajaxRequest.readyState == 4){
                    if(ajaxRequest.status == 200)   {
                    alert("File Found");
                    document.getElementById("downloadIframe").src = "abc.csv";
                    }
                    else    
                        alert("File Not Found");


                }
            }
            ajaxRequest.open("GET", "abc.csv", true);
            ajaxRequest.send(null); 
        }

    </script>
    <input type = "button" onclick = "ajaxFunction()" value =  "Download"/>
    <iframe id =  "downloadIframe" src =""  style="display:none;"></iframe>
</body>