安卓系统和ios系统
** 一开始被一篇ios预览PDF文件需要用到webview的博客给误导了,以为安卓预览文件需要调用wx.downloadFile()和wx.openDocument()这两个API,而ios系统预览文件则是要用webview标签才能实现,最后捣鼓了好长时间ios用webview 标签预览文件的时候一直显示空白。不知道为什么(至今也没能解决),官方给出的答案是webview不能直接预览文件(也没搞明白嘛意思?)。**
** 所以,记住了安卓和ios预览文件的时候都可以直接调用wx.downloadFile()和wx.openDocument()这两个API就可以了,千万别再看那个什么ios预览文件需要用webview才能实现的帖子了。(全是误导你的)**
wx.chooseMessageFile({
count: 1, //能选择文件的数量
type: 'file', //能选择文件的类型,我这里只允许上传文件.还有视频,图片,或者都可以
success(res) {
var size = res.tempFiles[0].size;
var name = res.tempFiles[0].name;
var temporaryPdfArr = [];
temporaryPdfArr.push(res.tempFiles[0]);
var filePath = res.tempFiles[0].path;
var newfilename = name + "";
if (size > 10485760 || newfilename.indexOf(".pdf") == -1) { //限制了文件的大小和具体文件类型
wx.showToast({
title: '文件大小不能超过10MB,格式必须为pdf!',
icon: "none",
duration: 2000,
mask: true
})
} else {
wx.showLoading({
title: '上传中...',
mask: true,
});
var formData = { //打开PDF文件所需传入的data
user_id: app.globalData.uid,
type: 'question',
name: name,
}
wx.uploadFile({
url: config.DOMAIN_API.upFilePdf, //上传的路径
filePath: filePath, //刚刚在data保存的文件路径
formData: formData,
name: 'file', //后台获取的凭据
success(res) {
var fileBackDa = JSON.parse(res.data).data;
var backPdfArr = [];
backPdfArr.push(fileBackDa)
wx.hideLoading(); //隐藏提示框
//上传成功,push进pdfFrontEnd便于前台展示
that.setData({
pdfFrontEnd: that.data.pdfFrontEnd.concat(temporaryPdfArr),
pdfBackEnd: that.data.pdfBackEnd.concat(backPdfArr)
});
}
})
}
}
})
注释:web-view下暂不支持此API
wx.downloadFile()的属性如下:
属性 说明 url 下载资源的 url
header HTTP 请求的 Header,Header 中不能设置 Referer
filePath 指定文件下载后存储的路径
success 接口调用成功的回调函数
fail 接口调用失败的回调函数
complete 接口调用结束的回调函数(调用成功、失败都会执行)
wx.openDocument()的属性如下:
属性 说明 filePath 文件路径,可通过 downloadFile 获得
fileType 文件类型,指定文件类型打开文件
success 接口调用成功的回调函数
fail 接口调用失败的回调函数
complete 接口调用结束的回调函数(调用成功、失败都会执行)
wx.openDocument()打开的文件格式有:
值 说明
doc doc 格式
docx docx 格式
xls xls 格式
xlsx xlsx 格式
ppt ppt 格式
pptx pptx 格式
pdf pdf 格式
备注:此上仅代表我自己的个人看法,有不足的地方还望告知。此后加油更正!
————————————————
版权声明:本文为CSDN博主「前端小张」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/qq_37949737…