我在
springboot应用程序中有我的后端,从那里我返回一个.csv文件
@RequestMapping(value = "/downloadCSV") public void downloadCSV(HttpServletResponse response) throws IOException { String csvFileName = "books.csv"; response.setContentType("text/csv"); // creates mock data String headerKey = "Content-Disposition"; String headerValue = String.format("attachment; filename=\"%s\"",csvFileName); response.setHeader(headerKey,headerValue); Book book1 = new Book("Effective Java","Java Best Practices","Joshua Bloch","Addision-Wesley","0321356683","05/08/2008",38); Book book2 = new Book("Head First Java","Java for Beginners","Kathy Sierra & Bert Bates","O'Reilly Media","02/09/2005",30); Book book3 = new Book("Thinking in Java","Java Core In-depth","Bruce Eckel","Prentice Hall","0131872486","02/26/2006",45); Book book4 = new Book("Java Generics and Collections","Comprehensive guide to generics and collections","Naftalin & Philip Wadler","0596527756","10/24/2006",27); List<Book> listBooks = Arrays.asList(book1,book2,book3,book4); // uses the Super CSV API to generate CSV data from the model data ICsvBeanWriter csvWriter = new CsvBeanWriter(response.getWriter(),CsvPreference.STANDARD_PREFERENCE); String[] header = { "Title","Description","Author","Publisher","isbn","PublishedDate","Price" }; csvWriter.writeHeader(header); for (Book aBook : listBooks) { csvWriter.write(aBook,header); } csvWriter.close(); }
When i am hitting the URL in browser csv file is getting downloaded.
现在我试图从我的角度2应用程序中点击此URL,代码是这样的:
零件:
exportCSV() { console.log('export csv called'); this.csvservice.getCSVReport().subscribe(data => this.downloadFile(data)),//console.log(data),error => console.log('Error downloading the file.'),() => console.info('OK'); } downloadFile(data: any) { let parsedResponse = data.text(); let blob = new Blob([parsedResponse],{ type: 'text/csv' }); let url = window.URL.createObjectURL(blob); window.open(url); }
服务:
getCSVReport() { return this.http.get(this.config.importCSVApiUrl); }
Actually it should be Book.csv
请指导我缺少的东西.
有一种解决方法,但您需要创建一个< a>页面上的元素.调用revokeObjectURL清除内存:
downloadFile(data: any) { let parsedResponse = data.text(); let blob = new Blob([parsedResponse],{ type: 'text/csv' }); let url = window.URL.createObjectURL(blob); if(navigator.msSaveOrOpenBlob) { navigator.msSaveBlob(blob,'Book.csv'); } else { let a = document.createElement('a'); a.href = url; a.download = 'Book.csv'; document.body.appendChild(a); a.click(); document.body.removeChild(a); } window.URL.revokeObjectURL(url); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。