У меня есть загрузочное приложение Spring, которое загружает файл PDF вместе с другими данными в базу данных mysql. Умею хранить файл. Ниже приведен мой код // Модель
public class DocumentModel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String documentCategory;
@Lob
private byte[] file;
private String fileName;
public DocumentModel() {}
public DocumentModel(String documentCategory, byte[] file, String fileName) {
super();
this.documentCategory = documentCategory;
this.file = file;
this.fileName = fileName;
}
//getters and settters
// Репозиторий
@Repository
public interface DocumentDao extends JpaRepository<DocumentModel, Long> {
public DocumentModel findByDocumentCategory(String documentCategory);
}
// Сервис
public interface DocumentService {
public DocumentModel getDocument(String documentCategory);
}
// Реализация сервиса
@Service
public class DocumentServiceImpl implements DocumentService {
@Autowired private DocumentDao documentDao;
@Override
public DocumentModel getDocument(String documentCategory) {
final DocumentModel retrievedDocument = documentDao.findByDocumentCategory(documentCategory);
DocumentModel document = new DocumentModel(retrievedDocument.getDocumentCategory(),decompressBytes(retrievedDocument.getFile()),
retrievedDocument.getFileName());
return document;
}
public static byte[] decompressBytes(byte[] file) {
Inflater inflater = new Inflater();
inflater.setInput(file);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(file.length);
byte[] buffer = new byte[1024];
try {
while (!inflater.finished()) {
int count = inflater.inflate(buffer);
outputStream.write(buffer, 0, count);
}
outputStream.close();
} catch (IOException ioe) {
} catch (DataFormatException e) {
}
return outputStream.toByteArray();
}
}
// Контроллер
@RestController
@RequestMapping("/Document")
public class DocumentController {
@Autowired private DocumentService documentService;
@RequestMapping("/view")
public @ResponseBody DocumentModel fetchDocument(@RequestParam("documentCategory") String documentCategory) {
return documentService.getDocument(documentCategory);
}
}
// html
<div id="documentPreview">
<iframe>{{documentInfo}}</iframe>
<button v-on:click="viewDocument">Preview</button>
</div>
<script type="text/javascript" >
var documentApp=new Vue({
el:"#documentPreview",
data:function(){
return {
documentInfo:''
}
},
methods:{
viewDocument:function() {
axios.get(`/Document/view?documentCategory=degree`).then(function (response) {
this.documentInfo = response.data;
}.bind(this))
}
}
});
</script>
Мне нужно, чтобы PDF отображался в контейнере предварительного просмотра при нажатии кнопки предварительного просмотра. Заранее благодарим вас за помощь.