zip_oss.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // var axios = require("axios");
  2. // var jszip = require("jszip");
  3. // var FileSaver = require("file-saver");
  4. const zipOss = {
  5. getFile: function(url) {
  6. return new Promise((resolve, reject) => {
  7. axios({
  8. headers:{
  9. 'Cache-control': 'no-cache',
  10. },
  11. method: "get",
  12. url,
  13. responseType: "arraybuffer"
  14. })
  15. .then(data => {
  16. resolve(data.data);
  17. })
  18. .catch(error => {
  19. reject(error);
  20. });
  21. });
  22. },
  23. downloadFromAliOss: function (fileArr, zipName, btn) {
  24. const zip = new JSZip();
  25. const promises = [];
  26. fileArr.forEach(item => {
  27. let promise = zipOss.getFile(item.url).then(data => {
  28. // 获取文件类型
  29. const typeArr = item.url.split(".");
  30. const type = typeArr[typeArr.length - 1];
  31. // 默认文件名·
  32. const nameArr = item.url.split("/");
  33. const name = item.name ? (item.name + '.' + type) : nameArr[nameArr.length - 1];
  34. const foldPath = item.foldPath || "";
  35. zip.file(foldPath + name, data, {
  36. binary: true
  37. });
  38. });
  39. promises.push(promise);
  40. });
  41. Promise.all(promises).then(() => {
  42. zip.generateAsync({ type: "blob" }).then(content => {
  43. saveAs(content, zipName || `文件.zip`);
  44. toastr.clear();
  45. toastr.success('下载成功');
  46. btn.removeAttr('disabled');
  47. });
  48. });
  49. }
  50. };
  51. // module.exports = zipOss;