vue.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // @ts-nocheck
  2. import {platform} from '../platform'
  3. /**
  4. * buffer转路径
  5. * @param {Object} buffer
  6. */
  7. // @ts-nocheck
  8. export function arrayBufferToFile(buffer: ArrayBuffer | Blob, name?: string, format?:string):Promise<(File|string)> {
  9. return new Promise((resolve, reject) => {
  10. // #ifdef MP
  11. const fs = uni.getFileSystemManager()
  12. //自定义文件名
  13. if (!name && !format) {
  14. reject(new Error('ERROR_NAME_PARSE'))
  15. }
  16. const fileName = `${name || new Date().getTime()}.${format.replace(/(.+)?\//,'')}`;
  17. let pre = platform()
  18. const filePath = `${pre.env.USER_DATA_PATH}/${fileName}`
  19. fs.writeFile({
  20. filePath,
  21. data: buffer,
  22. success() {
  23. resolve(filePath)
  24. },
  25. fail(err) {
  26. console.error(err)
  27. reject(err)
  28. }
  29. })
  30. // #endif
  31. // #ifdef H5
  32. const file = new File([buffer], name, {
  33. type: format,
  34. });
  35. resolve(file)
  36. // #endif
  37. // #ifdef APP-PLUS
  38. const bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now())
  39. const base64 = uni.arrayBufferToBase64(buffer)
  40. bitmap.loadBase64Data(base64, () => {
  41. if (!name && !format) {
  42. reject(new Error('ERROR_NAME_PARSE'))
  43. }
  44. const fileNmae = `${name || new Date().getTime()}.${format.replace(/(.+)?\//,'')}`;
  45. const filePath = `_doc/uniapp_temp/${fileNmae}`
  46. bitmap.save(filePath, {},
  47. () => {
  48. bitmap.clear()
  49. resolve(filePath)
  50. },
  51. (error) => {
  52. bitmap.clear()
  53. reject(error)
  54. })
  55. }, (error) => {
  56. bitmap.clear()
  57. reject(error)
  58. })
  59. // #endif
  60. })
  61. }