У меня есть веб-сайт, где вы передаете код бронирования, а затем загружается связанный с ним pdf.
У меня вопрос в том случае, если pdf не существует.
Возможно ли управление с помощью window.location? Я должен вернуть с сервера нулевое значение?
Если я ввожу код, в котором нет PDF-файла, возвращается PDF-файл, и я получаю сообщение об ошибке, в котором говорится, что PDF-файл не может быть загружен.
скачатьPdfBooking. jsp
<script type="text/javascript">
gProperty="<%=pProperty%>";
gCodiMuseu="<%=pNomCache%>";
$(document).ready(function(){
$('#downloa2dPdf').click(function() {
var loc = $('#localitzadorReserva').val();
window.location = "pdf.jsp?code="+code+"&entitat="+gCodiMuseu+"&property="+gProperty;
});
});
</script>
//other stuff
//...
//...
<section class="main-content-wrapper">
<section id="main-content">
<div class="container">
<div class="container-mobile">
<div class="row">
<br>
<h3 class="title-text">Website to get the pdf of your booking</h3>
<form>
<div class="form-group">
<label class = "label-text" for="inputLocalitzador">Enter the code of the booking</label>
<i class="fa fa-file-pdf-o" aria-hidden="true"></i>
<input type="text" class="form-control" id="localitzadorReserva" placeholder="Enter the code">
</div>
<a class="button-download button-text" id="downloa2dPdf" >download pdf <span class="fa fa-file-pdf-o" aria-hidden="true"></span></a>
</form>
</div>
</div>
</div>
</section>
</section>
pdf. jsp
//other stuff... (create the database connection)
String sql = "select document from gestio_documental where codeBooking='"+code+"'"+ "and codi_entitat='"+entitat+"'";
ResultSet rs = stmt.executeQuery(sql);
InputStream inputStream = null; //la imagen la guardaremos en un InputStream
FileInputStream file = null;
if (rs.next()) {
inputStream = rs.getBinaryStream(1); //Obtenemos el binario del campo Blob
}
response.setHeader("Content-Disposition","attachment;filename=document.pdf");
if(inputStream!=null){
imagen = inputStream; //Esto puede ser extra, despues optimizas
ServletOutputStream bOut = response.getOutputStream();
byte[] buffer = new byte[240996];
for (;;) {
int nBytes = imagen.read(buffer);
if (nBytes == -1) {
break;
}
bOut.write(buffer);
}
imagen.close();
bOut.flush();
bOut.close();
}else{
response.setContentType("text/html; charset=UTF-8");
out.println("Error");
}