微信小程序?qū)崿F(xiàn)打開并下載服務(wù)器上面的pdf文件到手機(jī)
談一談ios的bug:
關(guān)于ios系統(tǒng)的bug這塊也是快把柚子給逼瘋了啊,ios系統(tǒng)是沒(méi)有文件管理的,柚子用了很多辦法,最后終于確定不管用什么辦法ios都是實(shí)現(xiàn)不了下載的,只能實(shí)現(xiàn)在線查看。所以沒(méi)辦法,如果不考慮兼容ios的話,是很簡(jiǎn)單就能解決的,但是我想沒(méi)有哪一個(gè)小程序會(huì)不讓你兼容ios的吧!
先看一下不兼容ios系統(tǒng)的下載柚子是怎么實(shí)現(xiàn)的吧:
首先我們需要在頁(yè)面里寫入一個(gè)按鈕,用來(lái)觸發(fā)pdf的打開和下載,寫上點(diǎn)擊事件
//查看并下載
See_download() {
wx.downloadFile({//下載
url: url,//服務(wù)器上的pdf地址
filePath: wx.env.USER_DATA_PATH + '/test.pdf',//自定義文件地址
success: function (res) {
var filePath = res.filePath
wx.openDocument({//打開
filePath: filePath,
success: function (res) {}
})
}
})
}
OK,執(zhí)行完成后就已經(jīng)下載了,并且也已經(jīng)打開了,但是柚子剛剛就說(shuō)了,ios是不支持下載的,也就是說(shuō)ios可以正常打開,但是不能下載,就是這樣,另外安卓的是下載了,但是不太好找,他的存放目錄是:文件管理/Tencent/MicroMsg/wxanewfiles/一個(gè)名字很長(zhǎng)的文件夾/test.pdf


好了,這就是不兼容ios下載的方法,但是遇到問(wèn)題了總要想辦法解決的啊,最后實(shí)在沒(méi)辦法了,只能稍微改一下需求,改成了轉(zhuǎn)發(fā),反正下載下來(lái)也是要發(fā)給別人看的嘛,還不如直接點(diǎn)擊按鈕實(shí)現(xiàn)轉(zhuǎn)發(fā)給微信好友了呢
但是微信小程序的轉(zhuǎn)發(fā)是只能轉(zhuǎn)發(fā)頁(yè)面的,所以柚子就新建了一個(gè)專門存放pdf文件的頁(yè)面,我們默人打開這個(gè)頁(yè)面就自動(dòng)打開pdf也是一樣的效果:下面是實(shí)現(xiàn)思路,僅供參考:
1、首先需要一個(gè)轉(zhuǎn)發(fā)按鈕,要獲取微信的通訊錄的話,按鈕中需要加入open-type="share"這個(gè)屬性的
<button type="primary" size="mini" open-type="share" > 轉(zhuǎn)發(fā) </button>
2、有了轉(zhuǎn)發(fā)按鈕我們直接在頁(yè)面中寫方法即可:
onShareAppMessage: function (res) {
return {
title: '轉(zhuǎn)發(fā)的標(biāo)題',
path: '/pages/pdf/pdf?url=' + this.data.url,//這個(gè)url是要帶到轉(zhuǎn)發(fā)的那個(gè)頁(yè)面的
imageUrl: '/static/images/pdf.png', //圖片可以是本地圖片
}
},
//注:此方法是不用點(diǎn)擊事件觸發(fā)的,只要有open-type="share"就會(huì)觸發(fā),還有就是此方法是不能異步獲取參數(shù)的,所有要帶到轉(zhuǎn)發(fā)頁(yè)面的參數(shù)都要在轉(zhuǎn)發(fā)之前獲取到
3、下面就是轉(zhuǎn)發(fā)的頁(yè)面中的內(nèi)容了,要在打開這個(gè)頁(yè)面的時(shí)候就進(jìn)入pdf文件,為了頁(yè)面的美觀,柚子又做了一些優(yōu)化,不需要的可以忽略,下面是代碼:
<view>
<view class="btn_box" wx:if="{{show_btn}}">
<button type="primary" bindtap="home">返回首頁(yè)</button>
<navigator class="back" open-type="exit" target="miniProgram">關(guān)閉小程序</navigator>
</view>
</view>
/* pages/pdf/pdf.wxss */
.btn_box{
width: 100%;
box-sizing: border-box;
padding: 30rpx 5%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
margin-top: -50rpx;
}
button{
margin-top: 50rpx;
height: 100rpx;
line-height: 100rpx;
}
.back{
width: 100%;
margin-top: 50rpx;
height: 100rpx;
line-height: 100rpx;
color: #FFF;
background-color: #E64340;
box-sizing: border-box;
font-size: 18px;
text-align: center;
border-radius: 10rpx;
}
// pages/pdf/pdf.js
Page({
/**
* 頁(yè)面的初始數(shù)據(jù)
*/
data: {
check:0,
url:'',
show_btn:false,
},
/**
* 生命周期函數(shù)--監(jiān)聽頁(yè)面加載
*/
onLoad: function (options) {
this.setData({
url: options.url
})
},
// 返回首頁(yè)
home(){
wx.reLaunch({
url: '/pages/index/index'
})
},
/**
* 生命周期函數(shù)--監(jiān)聽頁(yè)面顯示
*/
onShow: function () {
var that = this
wx.showLoading({
title: '加載中...',
})
if(this.data.check == 0){
this.setData({
check:1
})
wx.downloadFile({
url: that.data.url,
filePath: wx.env.USER_DATA_PATH + '/' + that.data.name,
success: function (res) {
var filePath = res.filePath
wx.openDocument({
filePath: filePath,
success: function (res) {
wx.hideLoading();
}
})
}
})
}else{
wx.hideLoading();
this.setData({
show_btn:true
})
}
},
})
好了就是這些了,如果還有不懂的朋友歡迎咨詢,另外如果有更好的辦法,或者是支持ios下載pdf的文件的,或者轉(zhuǎn)發(fā)pdf的更好的方法也希望能告訴柚子一下,柚子感激不盡!
總結(jié)
以上所述是小編給大家介紹的微信小程序?qū)崿F(xiàn)打開并下載服務(wù)器上面的pdf文件到手機(jī),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- 微信小程序上傳圖片到服務(wù)器實(shí)例代碼
- 微信小程序 消息推送php服務(wù)器驗(yàn)證實(shí)例詳解
- 微信小程序ajax實(shí)現(xiàn)請(qǐng)求服務(wù)器數(shù)據(jù)及模版遍歷數(shù)據(jù)功能示例
- 微信小程序使用wx.request請(qǐng)求服務(wù)器json數(shù)據(jù)并渲染到頁(yè)面操作示例
- 微信小程序搭建自己的Https服務(wù)器
- 微信小程序遇到修改數(shù)據(jù)后頁(yè)面不渲染的問(wèn)題解決
- 微信小程序 數(shù)據(jù)交互與渲染實(shí)例詳解
- 微信小程序 條件渲染詳解
- 微信小程序 教程之列表渲染
- 微信小程序使用for循環(huán)動(dòng)態(tài)渲染頁(yè)面操作示例
- 微信小程序模版渲染詳解
- 微信小程序開發(fā)(一):服務(wù)器獲取數(shù)據(jù)列表渲染操作示例
相關(guān)文章
javascript之大字符串的連接的StringBuffer 類
javascript之大字符串的連接的StringBuffer 類...2007-05-05
微信小程序獲取地理位置及經(jīng)緯度授權(quán)代碼實(shí)例
這篇文章主要介紹了微信小程序獲取地理位置及經(jīng)緯度授權(quán)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
屏蔽IE彈出"您查看的網(wǎng)頁(yè)正在試圖關(guān)閉窗口,是否關(guān)閉此窗口"的方法
本篇文章主要是對(duì)屏蔽IE彈出"您查看的網(wǎng)頁(yè)正在試圖關(guān)閉窗口,是否關(guān)閉此窗口"的方法進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2013-12-12
深入淺析JavaScript函數(shù)前面的加號(hào)和嘆號(hào)
這篇文章主要介紹了深入淺析JavaScript函數(shù)前面的加號(hào)和嘆號(hào)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07
webpack file-loader和url-loader的區(qū)別
這篇文章主要介紹了webpack file-loader和url-loader的區(qū)別,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01

