useDownloadFromRoute.ts 804 B

123456789101112131415161718192021222324
  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. // eslint-disable-next-line import/no-named-as-default-member
  18. FileSaver.saveAs(blob, filename)
  19. }