最近項(xiàng)目中遇到一個(gè)需求,就是要保存商品的圖片到手機(jī)相冊,一開始我還以為挺簡單的,畢竟文檔在哪里,小程序一般都是拿來就用的,可是這個(gè)就是不行,遇到提示saveImageToPhotosAlbum:fail file not found問題,最后發(fā)現(xiàn)是用戶沒有授權(quán)。解決這個(gè)問題又發(fā)現(xiàn)小程序又無法保存圖片,這明明是同意了為什么還不行,經(jīng)過研究發(fā)現(xiàn),我沒要先獲取圖片信息在進(jìn)行保存就可以了。我使用的是uni-app來開發(fā)的,如果你用原生小程序開發(fā)的話就把uni改成wx吧!在這里我強(qiáng)烈推薦大家使用uni-app來開發(fā)小程序。具體什么好處,大伙可以去看看uni-app的文檔,好了不多說看代碼。
/* 如果是這么寫的,可以不使用button設(shè)置open-type屬性*/ /* 判斷是否授權(quán) */ uni.authorize({ /* 這個(gè)就是保存相冊的 */ scope: 'scope.writePhotosAlbum', success() { /* 保存圖片方法 */ img(); }, complete(res) { console.log(res); /* 這里判斷一下如果沒有授權(quán)重新打開設(shè)置選項(xiàng) */ uni.getSetting({ success(res) { if (!res.authSetting['scope.writePhotosAlbum']) { /* 打開設(shè)置的方法 */ opensit(); } } }); } });
/* 授權(quán)提示 ,這里就是重復(fù)提示用戶去授權(quán)*/ function opensit() { uni.showModal({ content: '由于您還沒有允許保存圖片到您相冊里,這無法進(jìn)行分享操作點(diǎn)擊確定去允許授權(quán)', success: function(res) { if (res.confirm) { /* 這個(gè)就是打開設(shè)置的API*/ uni.openSetting({ success(res) { console.log(res.authSetting); } }); } else if (res.cancel) { uni.showModal({ cancelText: '依然取消', confirmText: '重新授權(quán)', content: '很遺憾你點(diǎn)擊了取消,這將無法進(jìn)行分享操作,請慎重考慮', success: function(res) { if (res.confirm) { uni.openSetting({ success(res) { console.log(res.authSetting); } }); } else if (res.cancel) { console.log('用戶不授權(quán)'); } } }); } } }); }
/* 特別注意要先獲取圖片信息在進(jìn)行保存,不讓保存不了 */ function img() { /* 我這里要保存多張圖片,一張的話就可以取消這些,具體看你的需求 */ if (num > len) { return false; } /* 獲取圖片信息 */ uni.getImageInfo({ src: obj[num], success: function(image) { console.log(image); /* 保存圖片到相冊 */ uni.saveImageToPhotosAlbum({ filePath: image.path, success: function() { console.log('save success'); if (num == len) { uni.showModal({ title: '保存成功', content: '圖片已成功保存到相冊,快去分享到您的圈子吧', showCancel: false }); } }, complete(res) { console.log(res); } }); } }); num++; img(); }
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)