1234567891011121314151617181920212223242526272829303132333435363738394041 |
- const AliOss = (function (){
- const downloadFile = function (url, filename) {
- axios.get(url, {responseType: 'blob' }).then(res => {
- saveAs(res.data, filename);
- });
- };
- const downloadFileSync = function(url) {
- return new Promise((resolve, reject) => {
- axios.get(url, {responseType: 'blob'}).then(res => {
- resolve(res.data);
- }).catch(err => {
- reject(err);
- });
- })
- };
- const zipFiles = function (files, filename = '打包.zip', successCallback, errorCallback) {
- const zip = new JSZip();
- const download = [], fails = [];
- files.forEach(f => {
- download.push(downloadFileSync(f.filepath).then(data => {
- zip.file(f.filename + f.fileext, data, {binary: true});
- }).catch(err => {
- fails.push(f);
- }));
- });
- Promise.all(download).then(() => {
- if (fails.length < files.length) {
- zip.generateAsync({ type: "blob" }).then(content => {
- saveAs(content, filename);
- successCallback && successCallback(fails);
- });
- } else {
- errorCallback && errorCallback(fails);
- }
- })
- };
- return { downloadFile, downloadFileSync, zipFiles}
- })();
|