#java #file #modal-dialog #response
#java #файл #модальный диалог #ответ
Вопрос:
У меня есть этот код для открытия любого файла по пути. Но в этом случае файл открывается на новой вкладке.
Мне нужен этот ответ, чтобы открыть этот файл в модальном загрузчике или диалоге.
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);
У кого-нибудь есть подсказка или другой способ сделать?
Комментарии:
1. Итак, по сути, вы хотите «просмотреть» файл в модальном окне вашего браузера, как, например, Google Drive? Что это за файл?
2. ДА. Может быть, например, PDF, docx, xlsx.
3. Ну, я полагаю, что направление ответа на iframe внутри модального диалога может быть решением.
Ответ №1:
Я нашел решение.
Использование bootstrap 3.3.5
В HTML кнопка вызывает функцию javascript ‘view’, передавая в качестве параметров путь к сервлету (MSD) и расширение файла:
<button class="btn-doc-sm btn-default" type="button"
onclick="view('<% out.print(MSD?p=c:/upload/documents/document.docxamp;action=view)); %>', '<% out.print(ext); %>')" id="view">
<span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span>View
</button>
Функция .js устанавливает значение пути для модального, идентифицируемого pathDoc, и открывает модальный режим «просмотр».
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>
«Переменный путь» — это ссылка для вызова сервлета, передающего «реальный путь» и действие в качестве параметра. Сервлет откроет вывод с файлом.
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;
Итак, когда вызывается модальный, в src устанавливается ссылка на сервлет для открытия файла. Сервлет выполняет поиск и открывает файл при выводе.