ftp.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. async function getList (ftp, src) {
  2. return new Promise(resolve => {
  3. ftp.list(src, (err, list) => {
  4. if (err) {
  5. console.error(err)
  6. resolve(false)
  7. } else {
  8. resolve(list)
  9. }
  10. })
  11. })
  12. }
  13. async function rmDir (ftp, src, recusive = true) {
  14. return new Promise(resolve => {
  15. ftp.rmdir(src, recusive, err => {
  16. if (err) {
  17. console.error(err)
  18. resolve(false)
  19. } else {
  20. resolve(true)
  21. }
  22. })
  23. })
  24. }
  25. async function deleteFile (ftp, src) {
  26. return new Promise(resolve => {
  27. ftp.delete(src, err => {
  28. if (err) {
  29. console.error(err)
  30. resolve(false)
  31. } else {
  32. resolve(true)
  33. }
  34. })
  35. })
  36. }
  37. async function emptyDir (ftp, src, except = []) {
  38. const list = await getList(ftp, src)
  39. for (let i = 0, listNum = list.length; i < listNum; i++) {
  40. const { type, name } = list[i]
  41. if (type === 'd' && (name === '.' || name === '..')) continue
  42. if (except.find(n => n === name)) continue
  43. const fullSrc = `./${name}`
  44. if (type === 'd') {
  45. if (!await rmDir(ftp, fullSrc, true)) return false
  46. } else {
  47. if (!await deleteFile(ftp, fullSrc)) return false
  48. }
  49. }
  50. return true
  51. }
  52. async function put (ftp, src, dest) {
  53. return new Promise(resolve => {
  54. ftp.put(src, dest, err => {
  55. if (err) {
  56. console.error(err)
  57. resolve(false)
  58. } else {
  59. resolve(true)
  60. }
  61. })
  62. })
  63. }
  64. async function mkDir (ftp, src, recusive = true) {
  65. return new Promise(resolve => {
  66. ftp.mkdir(src, recusive, err => {
  67. if (err) {
  68. console.error(err)
  69. resolve(false)
  70. } else {
  71. resolve(true)
  72. }
  73. })
  74. })
  75. }
  76. module.exports = {
  77. put,
  78. rmDir,
  79. mkDir,
  80. getList,
  81. emptyDir,
  82. deleteFile
  83. }