如何封装微信小程序中的图片上传功能


前言

在微信小程序开发中,图片上传功能是一个十分常见的需求,不管是社交分享、商城中的商品图片上传,还是在线报修、问诊等应用场景,上传图片都能够提升用户体验。而在实际项目中,我们常常需要对上传图片的逻辑进行封装,使得代码更加简洁、易于复用。本文将详细介绍如何封装微信小程序中的图片上传功能,帮助开发者构建一个易扩展、易维护的上传模块。


一、需求分析与设计思路

在开发一个图片上传功能时,我们需要关注以下几个方面:

•	多张图片上传:是否允许用户同时选择和上传多张图片?
•	文件校验:需要限制图片的格式和大小,避免用户上传不支持的格式或过大的图片文件。
•	错误处理:如何优雅地处理上传失败或文件选择失败的情况,提升用户体验。
•	模块化封装:为了提高代码的复用性,我们希望将上传逻辑封装成一个函数,能够灵活配置上传路径、表单数据等。

基于这些需求,我们决定对微信小程序的 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 返回一个 Promise,resolve 成功结果,reject 错误信息
 */
export function uploadImages(formData: object = {
   
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值