useDownloadFromRoute.ts 742 B

1234567891011121314151617181920212223
  1. import FileSaver from 'file-saver'
  2. import { useAp2iRequestService } from '~/composables/data/useAp2iRequestService'
  3. import File from '~/models/Core/File'
  4. /**
  5. * Permet de télécharger un fichier fourni par la route donnée
  6. * @param route
  7. * @param filename
  8. */
  9. export const useDownloadFromRoute = async (route: string, filename: string) => {
  10. const { apiRequestService } = useAp2iRequestService()
  11. // @ts-expect-error La méthode get renvoie bien un blob dans ce cas là
  12. const response = (await apiRequestService.get(route)) as Blob
  13. if (!response || response.size === 0) {
  14. console.error('Error: no file found at ' + route)
  15. }
  16. const blob = new Blob([response], { type: response.type })
  17. FileSaver.saveAs(blob, filename)
  18. }