我有这个代码用于打开路径中的任何文件。但在这种情况下,文件将在新选项卡中打开。
我需要该响应在模态引导程序或对话框中打开此文件。
File file = new File(path);
String name = file.getName();
int fileSize = (int) file.length();
response.setContentType(contentType);
response.setContentLength(sizeFile);
response.setHeader("Content-Disposition", "inline; filename=\"" + name + "\"");
output = response.getOutputStream();
Files.copy(file.toPath(), output);
有人有提示或其他方法吗?
答案 0 :(得分:0)
我找到了解决方案。
使用bootstrap 3.3.5
在HTML中,按钮调用javascript函数' view'将参数作为参数传递给servlet(MSD)和文件扩展名:
<button class="btn-doc-sm btn-default" type="button"
onclick="view('<% out.print(MSD?p=c:/upload/documents/document.docx&action=view)); %>', '<% out.print(ext); %>')" id="view">
<span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span>View
</button>
.js函数设置pathDoc标识的模态的路径值,并打开&#39;视图&#39;模态的。
function view(path, ext) {
var booleanValue;
if (path !== null) {
$("#pathDoc").attr("src", path);
$("#view").modal('show');
booleanValue = true;
}
if (booleanValue !== true) {
$("#error").modal('show');
}
}
模态:
<div class="modal fade" id="view" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<!-- Header -->
<div id="confirmacao-label1">
<a href="#close" title="Close" data-dismiss="modal" class="closeModal">X</a>
</div>
<!-- End header -->
<div class="modal-body">
<div class="embed-responsive embed-responsive-4by3" id="modal-embed">
<iframe class="embed-responsive-item" id="pathDoc" nome="pathDoc" src=""></iframe>
</div>
</div>
</div>
</div>
</div>
&#39>变量路径&#39;是一个调用servlet传递“真实路径”的链接。并将动作作为参数。 servlet将打开带有文件的输出。
switch(action){
case "view":
try {
File file = new File(filePath);
String name = file.getName();
int fileSize = (int) file.length();
response.setContentType(action);
response.setContentLength(fileSize);
response.setHeader("Content-Disposition", "inline; filename=\"" + name + "\"");
output = response.getOutputStream();
Files.copy(file.toPath(), output);
break;
} catch (Exception ex ) {
System.out.println(ex.getMessage());
} finally {
output.close();
}
break;
因此,当调用Modal时,在src上设置了一个指向servlet的链接以打开文件。 servlet在输出时搜索并打开文件。