小程序在线打开 pdf、docx 等格式文件&下载读取 css 文件
小程序支持在线打开 doc, xls, ppt, pdf, docx, xlsx, pptx 格式文件。使用到的 api 有wx.downloadFile和wx.openDocument。
举个例子,打开在线 docx 格式文件
js
function look() {
wx.downloadFile({
// url: 'http://www.cztouch.com/upfiles/soft/testpdf.pdf',
url: 'https://www.nmpa.gov.cn/directory/web/nmpa/images/1665371105474033774.docx',
filePath: wx.env.USER_DATA_PATH + '/' + '隐私协议.docx',
// fileType: 'docx',
success: function (res) {
wx.openDocument({
filePath: res.filePath,
// fileType: 'docx',
showMenu: true,
success: function () {
},
fail() {
}
});
}
});
}小程序读取 css 文件
为什么要读取 css 文件?因为我有一个想法:每次修改字体图标,都要重新下载 iconfont.css 文件然后替换,很是麻烦。可不可以每次打开小程序都自动下载 iconfont.css,然后引入使用?
虽然结局失败了 (项目怎么引入下载下来的 css 文件呢?),但是每次打开小程序能够做到自动下载 iconfont.css,读取里面的内容。
代码如下:
js
async function readCss() {
const fs = wx.getFileSystemManager()
try {
fs.accessSync(`${wx.env.USER_DATA_PATH}/style`)
} catch (e) {
fs.mkdirSync(`${wx.env.USER_DATA_PATH}/style`, true)
}
try {
fs.accessSync(`${wx.env.USER_DATA_PATH}/style/iconfont.css`)
} catch (e) {
fs.mkdirSync(`${wx.env.USER_DATA_PATH}/style/iconfont.css`, true)
}
await new Promise((resolve, reject) => {
wx.downloadFile({
url: 'https://at.alicdn.com/t/c/font_2298467_uud05ygbeih.css?spm=a313x.7781069.1998910419.60&file=font_2298467_uud05ygbeih.css',
success: function (res) {
fs.saveFile({
tempFilePath: res.tempFilePath,
filePath: `${wx.env.USER_DATA_PATH}/style/iconfont.css`,
success(res) {
resolve('保存成功');
},
fail(e) {
reject('保存失败');
}
})
}
});
})
const res = fs.readFileSync(`${wx.env.USER_DATA_PATH}/style/iconfont.css`, 'utf-8', 0)
console.log('读取 css 文件内容', res)
}最后我想到可不可以利用 webpack 来下载读取 css 文件呢?然而这个问题得留在后面来解决了,不然就在这个小问题上浪费太多时间了。