mkdir.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. const fs = require('fs');
  2. const path = require('path');
  3. /**
  4. * 检测制定目录是否存在,如果不存在就生成,如果是文件就报错, 多次同一目录检测只会执行一次
  5. * @param {string} dirname 上传文件的目录
  6. */
  7. async function mkdir(dirname) {
  8. let state = await new Promise((resolve, reject) => {
  9. fs.stat(dirname, (err, stats) => {
  10. if (err) {
  11. resolve(-1);
  12. } else if (stats.isDirectory()) {
  13. resolve(0);
  14. } else {
  15. resolve(1);
  16. }
  17. });
  18. });
  19. if (state === 1) {
  20. throw `-------------upload module error ${dirname} is File---------`;
  21. } else if (state === 0) {
  22. return;
  23. }
  24. await mkdir(path.dirname(dirname));
  25. try {
  26. await new Promise((resolve, reject) => {
  27. fs.mkdir(dirname, (err) => {
  28. if (err) {
  29. reject(err);
  30. } else {
  31. resolve();
  32. }
  33. });
  34. });
  35. } catch(e) {
  36. throw `----------upload module create dir ${dirname} error ${e.message}------------`;
  37. }
  38. }
  39. module.exports = exports = mkdir;