我有一个脚本,在其中单击链接我需要下载服务器上临时文件夹中的 PDF 文件,我通过调用 AJAX 函数来做到这一点。该 AJAX 函数正在调用 struts 2 操作方法,该方法正在读取文件的内容并将其写入输出流。
现在的问题是临时文件夹中是否不存在该文件。那是抛出异常。所以我决定使用json来处理它。如果该文件存在于临时文件夹中。我正在将密钥映射到
jsonObject.put("exist", true)
如果临时文件夹中不存在该文件。我正在将密钥映射到
jsonObject.put("exist", false)
在 struts.xml 我用这种方式处理动作
<action name="DisplayStaticPdf"
class="com.ui.DisplayStaticPdfAction">
<result name="success" type="json"/>
</action>
在脚本中我通过这种方式处理它
function downloadDoc(actionName){
$.ajax({
url: actionName,
type: 'post',
dataType: 'json',
error: function(data) {
if(data.exist!= null && data.exist == 'false'){
alert('The document you are trying to download does not exist at location. Please make sure file exist .');
}
},
success: function() {
}
});
}
当文件不存在时,它会向我显示相同的警报。但是当文件不存在时,它什么也不做,也不会下载临时文件夹中的 pdf。
我的动作课看起来像->
String pdfFileName = null;
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
String rawFileName = "abc.pdf";
String returnString = "fileNotExist";
jsonObject = new JSONObject();
ServletOutputStream out = response.getOutputStream();
response.setContentType("application/pdf");
URL url = new URL(fileURL);
URLConnection conn = url.openConnection();
if (conn.getContentLength() != 0 && conn.getContentLength() != -1)
{
bis = new BufferedInputStream(conn.getInputStream());
bos = new BufferedOutputStream(out);
try
{
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length)))
{
bos.write(buff, 0, bytesRead);
}
jsonObject.put("exist", true);
}
returnString = SUCCESS;
}
else
{
jsonObject.put("exist", false);
returnString ="fileNotExist";
}
return returnString;
希望你们能理解我的问题。无论我是否以正确的方式做这件事,任何人都请说明这一点。或者有没有其他简单的方法可以做到这一点
谢谢,
安基特