当前位置: 首页 > news >正文

提供服务好的网站制作新闻热点

提供服务好的网站制作,新闻热点,怎么通过做网站来赚钱吗,代加工订单网文章目录 前言一、需求分析与设计思路二、上传图片功能封装三、页面调用示例四、功能改进与扩展4.1 压缩图片4.2 上传进度4.3 重试机制 五、总结 前言 在微信小程序开发中#xff0c;图片上传功能是一个十分常见的需求#xff0c;不管是社交分享、商城中的商品图片上传… 文章目录 前言一、需求分析与设计思路二、上传图片功能封装三、页面调用示例四、功能改进与扩展4.1 压缩图片4.2 上传进度4.3 重试机制 五、总结 前言 在微信小程序开发中图片上传功能是一个十分常见的需求不管是社交分享、商城中的商品图片上传还是在线报修、问诊等应用场景上传图片都能够提升用户体验。而在实际项目中我们常常需要对上传图片的逻辑进行封装使得代码更加简洁、易于复用。本文将详细介绍如何封装微信小程序中的图片上传功能帮助开发者构建一个易扩展、易维护的上传模块。 一、需求分析与设计思路 在开发一个图片上传功能时我们需要关注以下几个方面 • 多张图片上传是否允许用户同时选择和上传多张图片 • 文件校验需要限制图片的格式和大小避免用户上传不支持的格式或过大的图片文件。 • 错误处理如何优雅地处理上传失败或文件选择失败的情况提升用户体验。 • 模块化封装为了提高代码的复用性我们希望将上传逻辑封装成一个函数能够灵活配置上传路径、表单数据等。基于这些需求我们决定对微信小程序的 wx.chooseMedia 和 wx.uploadFile API 进行封装使得调用逻辑更加简洁并且处理了常见的文件校验和错误处理。 二、上传图片功能封装 下面是我们对微信小程序图片上传功能的封装代码。它允许上传多张图片包含文件格式和大小的校验并处理了上传和文件选择过程中的错误。 import { BASE_URL, prefix } from ./config;// 限制文件大小为 5MB const MAX_FILE_SIZE 5 * 1024 * 1024; /*** 校验图片格式* param {string} filePath - 选择的文件路径* returns {boolean} - 是否通过格式校验*/ function validateImageType(filePath: string): boolean {const validFormats [jpg, jpeg, png];const fileExtension filePath.split(.).pop()?.toLowerCase();return validFormats.includes(fileExtension || ); }/*** 校验图片大小* param {number} fileSize - 文件大小* returns {boolean} - 是否通过大小校验*/ function validateImageSize(fileSize: number): boolean {return fileSize MAX_FILE_SIZE; }/*** 上传图片到服务器* param formData - 额外的表单数据默认为空对象* param count - 上传的图片数量默认为 1* returns 返回一个 Promiseresolve 成功结果reject 错误信息*/ export function uploadImages(formData: object {}, count: number 1): Promiseany {return new Promise((resolve, reject) {// 选择照片wx.chooseMedia({count: count, // 用户可选择多张图片mediaType: [image],sourceType: [album, camera],success: (chooseMediaRes) {const tempFiles chooseMediaRes.tempFiles;// 校验文件格式和大小for (const file of tempFiles) {if (!validateImageType(file.tempFilePath)) {return reject(new Error(不支持的图片格式仅支持 JPG, JPEG, PNG 格式));}if (!validateImageSize(file.size)) {return reject(new Error(图片大小不能超过 ${MAX_FILE_SIZE / 1024 / 1024}MB));}}// 批量上传图片const uploadPromises tempFiles.map((file) {return new Promise((uploadResolve, uploadReject) {wx.uploadFile({url: ${BASE_URL}${prefix}/upload, // 上传接口地址filePath: file.tempFilePath,name: file, // 文件对应的 keyformData: formData, // 传递额外的表单数据success: (uploadRes) {try {const data JSON.parse(uploadRes.data); // 解析服务器返回的 JSON 数据uploadResolve(data); // 上传成功返回解析的数据} catch (error) {uploadReject(new Error(解析服务器返回的数据失败)); // 解析失败的错误处理}},fail: (err) {uploadReject(new Error(上传照片失败)); // 上传失败的错误处理},});});});// 等待所有上传请求完成Promise.all(uploadPromises).then(resolve).catch(reject);},fail: (err) {reject(new Error(选择照片失败));},});}); }功能解析 1. 文件格式校验我们定义了一个 validateImageType 函数用于确保用户上传的文件是 JPG、JPEG、PNG 格式。 2. 文件大小校验通过 validateImageSize 函数限制用户上传图片的大小不超过 5MB。 3. 多张图片上传通过传递 count 参数我们支持用户一次选择多张图片并且批量上传到服务器。 4. 错误处理我们捕获了图片选择、上传、以及服务器响应中的错误并在失败时返回详细的错误信息。三、页面调用示例 下面是如何在小程序的页面中调用这个封装好的图片上传功能 import { uploadImages } from ./upload;Page({data: {},async onUpload() {try {const formData { userId: 123456 }; // 附加的表单数据const response await uploadImages(formData, 3); // 上传最多3张图片console.log(上传成功:, response);} catch (error) {console.error(上传失败:, error.message);}} });调用解析 • uploadImages(formData, count)我们通过调用 uploadImages 方法传递表单数据如用户 ID以及允许用户选择上传最多3张图片。整个上传过程是异步的调用者可以通过 try/catch 块捕获上传过程中可能发生的错误。四、功能改进与扩展 虽然该功能已经可以满足基础的图片上传需求但我们可以根据具体业务场景进行扩展与优化 4.1 压缩图片 如果用户上传的图片尺寸较大我们可以在上传之前调用微信小程序的 wx.compressImage 接口对图片进行压缩以减少文件体积提高上传速度。 wx.compressImage({src: file.tempFilePath, // 图片路径quality: 80, // 压缩质量0 ~ 100success: (res) {// 将压缩后的图片路径用于上传} });4.2 上传进度 通过 wx.uploadFile 提供的 onProgressUpdate 事件我们可以实时获取文件上传的进度并展示给用户提升用户体验。 wx.uploadFile({...,onProgressUpdate: (progress) {console.log(上传进度:, progress.progress);} });4.3 重试机制 如果图片上传失败我们可以增加重试机制例如在上传失败后自动重新上传图片或者提示用户手动重新上传。 五、总结 通过封装微信小程序的图片上传功能我们不仅简化了代码的编写还增加了文件格式和大小校验、错误处理等功能极大提升了代码的复用性与可维护性。这种封装方式适用于任何涉及图片上传的场景方便在项目中随时调用并且根据实际需求可以扩展到视频上传、音频上传等其他文件上传场景。
http://www.dnsts.com.cn/news/157892.html

相关文章:

  • 如何开网站需要多少钱厦门seo顾问
  • 网站建设及推广图片网站内容设置
  • 男女做污的事情网站视频比较出名的网站域名
  • 深圳商城网站建设联科三网合一网站建设系统
  • 网站后台是怎样制作的免费网页游戏源码
  • 4399页游网站用淘宝做公司网站
  • 黑龙江住房城乡建设厅网站怎么注册公司的网站
  • 重视网站商务通国外设计素材网站
  • 深圳市光明区住房和建设局网站不让网站在手机怎么做
  • 公司产品网站应该怎么做网站标题关键优化
  • 公司禁用网站怎么做正规的培训学校
  • 网页设计旅游网站有了主机和域名后如何做网站
  • 门户网站建设管理工作自查报告东莞个人网站建设
  • 怎么看网站是哪个公司做的定制化网站开发的好处
  • 湘潭市 网站建设手机百度屏蔽我网站关键词
  • 健身网站模板php做视频分享网站
  • 旅游网站设计代码html网站建设优化服务公司
  • 模板网站免费知名企业网站例子
  • 国外做袜靴的网站山东的互联网公司都有什么
  • 网站建设设计哪家好复旦大学精品课程网站
  • 如何看网站是用什么框架做的wordpress 当前页
  • 外贸服装商城网站建设搜索引擎的设计与实现
  • 重庆企业网站建设高端网站的设计开发公司
  • asp.net怎么生成网站文字生成图片在线制作
  • 网站建设与网页设计 视频教程店铺营业执照在哪个网站做年审
  • 重庆建企业网站做网站应该会什么问题
  • 银川迅雷网站建设专业网站建设找哪家好
  • 网站公司缺点百度商务合作电话
  • 泉州惠安网站建设教育中介公司网站建设费用
  • 安顺网站开发公司社区网站建设难点