特易招,招聘小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.7 KiB

3 weeks ago
1 week ago
3 weeks ago
1 week ago
3 weeks ago
  1. const fsm = wx.getFileSystemManager();
  2. const FILE_BASE_NAME = 'tmp_base64src';
  3. const base64src = function(base64data) {
  4. return new Promise((resolve, reject) => {
  5. // 添加时间戳生成唯一文件名
  6. const timestamp = Date.now();
  7. const filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}_${timestamp}.png`;
  8. const buffer = wx.base64ToArrayBuffer(base64data);
  9. fsm.writeFile({
  10. filePath,
  11. data: buffer,
  12. encoding: 'binary',
  13. success() {
  14. resolve(filePath);
  15. },
  16. fail() {
  17. reject(new Error('ERROR_BASE64SRC_WRITE'));
  18. },
  19. });
  20. });
  21. };
  22. const unlink = function() {
  23. return new Promise((resolve, reject) => {
  24. // 获取临时文件列表
  25. fsm.readdir({
  26. dirPath: wx.env.USER_DATA_PATH,
  27. success: (res) => {
  28. // 删除所有tmp_base64src开头的临时文件
  29. const promises = res.files
  30. .filter(file => file.startsWith(FILE_BASE_NAME))
  31. .map(file => {
  32. return new Promise((res, rej) => {
  33. fsm.unlink({
  34. filePath: `${wx.env.USER_DATA_PATH}/${file}`,
  35. success: res,
  36. fail: rej
  37. });
  38. });
  39. });
  40. Promise.all(promises)
  41. .then(resolve)
  42. .catch(reject);
  43. },
  44. fail: reject
  45. });
  46. });
  47. };
  48. export default {
  49. base64src,
  50. unlink,
  51. };