昨天,30个人,走进了我们的小程序。我感动得眼泪差点糊了屏幕,这种感觉就像种地的农民伯伯看着庄稼疯长一样满足!
但是,万万没想到啊,今天居然涨到了 38个人!没错,整整比昨天多了8个!我这数学虽然不咋地,但这增长率可是妥妥的 26.666...6%!(小数点后还有很多6,证明我们增长有多牛~),8个新增用户,别笑,这对我来说就是天大的“流量暴增”!可以说,这38个人就是我编程生涯的里程碑,他们是闪耀的8颗小星星,为我这漆黑的开发深夜点亮了方向!
今天咱们来聊聊 个人开发者的史诗级奋斗日常。没错,就是我,前端、后端、运维、产品、客服、扫地阿姨……全都我一个牛马扛。
昨天我的小程序用户数是 30人。说实话,虽然不多,但看到这30个小圆头像,我心里那个骄傲自豪啊,忍不住冲着天花板比了个心❤️——终于不再是我一个人对着测试数据“自嗨”了!
今天是搞定了文档上传、解析、转换的全套逻辑(用脚本跑的,真别问过程,泪水逆流成河)。功能可以实现PDF转图片。DOCX转PDF,XLSX转PDF,现在功能已经递交审核,等小程序审核大哥盖个章!
开发一个小程序,真的不是一蹴而就的事。尤其是对于我这种全凭兴趣驱动、没有大厂背景的个人开发者来说,每个用户的点赞、每个建议的反馈,甚至哪怕只是点开了我的小程序,都让我觉得这一切值得!
明天,我的小程序将带着文档转换功能跟大家见面, 还请大家多多支持! 毕竟,你们每点一次,我都能多加一勺鸡腿饭!坚持到最后,我相信,一定会有更多的38个人为我喝彩。感谢大家,你们的每一次使用,都是对我这个小开发者最大的肯定!
先来说说uniapp小程序如何一次性下载多张图片,使用Promise.all
downloadMultipleImages() {
uni.showLoading({
title: '保存中',
mask: true
});
this.showDownloadProgress = true
// 存储所有的下载任务
const downloadPromises = this.imgsList.map(item => {
let downloadUrl = App.baseURL + '/api/display/' + item;
return this.downloadImage(downloadUrl, () => {});
});
// 使用 Promise.all 来并行处理所有的下载任务
Promise.all(downloadPromises)
.then(() => {
uni.hideLoading();
uni.showToast({
title: '所有图片保存成功',
icon: 'success'
});
})
.catch((error) => {
uni.hideLoading();
uni.showToast({
title: '图片保存失败',
icon: 'error'
});
});
},
与下载单张图片结合
downloadImage(url, onProgress) {
return new Promise((resolve, reject) => {
// 下载图片
uni.downloadFile({
url,
success: (res) => {
if (res.statusCode === 200) {
// 鉴权
uni.authorize({
scope: 'scope.writePhotosAlbum',
success: () => {
// 保存图片到相册
uni.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: () => {
resolve('保存成功');
// uni.showToast({
// title: '保存成功'
// });
this.completedImg += 1; // 已下载的图片数量
},
fail: (err) => {
if (err.errMsg.includes(
'fail cancel')) {
// 取消不为错,h5端可能有这个问题
uni.hideLoading();
return;
}
reject('保存失败');
// uni.showToast({
// title: '保存失败',
// icon: 'error'
// });
}
});
},
fail: () => {
// 鉴权失败手动打开
uni.hideLoading();
uni.showModal({
title: '提示',
content: '需要保存图片权限,请在设置中打开',
showCancel: false,
success: uni.openSetting
});
reject('鉴权失败');
}
});
} else {
reject('图片解析失败');
uni.showToast({
title: '图片解析失败',
icon: 'error'
});
}
},
fail: (err) => {
// 下载失败
reject('图片解析失败');
uni.showToast({
title: '图片解析失败',
icon: 'error'
});
}
});
});
}
行了,先到这吧,我还要去优化明天的上线版本,咱们晚上见,记得来体验啊!有兴趣的小伙伴可以微信搜索体验下!公众号同名,分享更多资源和心路历程