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

苏州艺术家网站建设新产品宣传推广策划方案

苏州艺术家网站建设,新产品宣传推广策划方案,自己做百度网站,网站建设投标书有两个方法需要提前引入 FileUtil(上传文件的方法)、to(对请求接口返回做了二次处理,数据和错误提示等) //FileUtil export namespace FileUtil {const env {timeout: 10000,uploadImageUrl: "阿里云的地址",};const genPolicy …

有两个方法需要提前引入 FileUtil(上传文件的方法)、to(对请求接口返回做了二次处理,数据和错误提示等)

//FileUtil
export namespace FileUtil {const env = {timeout: 10000,uploadImageUrl: "阿里云的地址",};const genPolicy = () => {let date = new Date();date.setHours(date.getHours() + env.timeout);let srcT = date.toISOString();const policyText = {expiration: srcT,conditions: [["content-length-range", 0, 1 * 1024 * 1024 * 1024], // 设置上传文件的大小限制1G],};var rawStr = JSON.stringify(policyText);var wordArray = Utf8.parse(rawStr);var policyBase64 = Base64.stringify(wordArray);return policyBase64;};const genSignature = (policyBase64, accessKey) => {const byte = HmacSHA1(policyBase64, accessKey);const signature = Base64.stringify(byte);return signature;};export const upload = async (fileInfo): Promise<{ url: string; errMsg: string }> => {const { path } = fileInfo;return new Promise(async (resolve) => {const res = await httpRequest({url: "图片上传的接口",method: "POST",});if (res?.code === 200 && res?.data) {const {Credentials: { AccessKeyId, AccessKeySecret, SecurityToken },} = res.data;const aliyunFileKey ="mini_" + new Date().getTime() + path.split("tmp/")[1]; //文件命名const policyBase64 = genPolicy();const signature = genSignature(policyBase64, AccessKeySecret);//小程序直传ossTaro.uploadFile({url: env.uploadImageUrl,filePath: path,name: "file",header: {"Content-Type": "multipart/form-data",},formData: {key: aliyunFileKey,policy: policyBase64,OSSAccessKeyId: AccessKeyId,signature: signature,"x-oss-security-token": SecurityToken, //使用STS签名时必传。success_action_status: "200",},success: function (resp) {if (resp?.statusCode === 200) {resolve({url: env.uploadImageUrl + aliyunFileKey,errMsg: "ok",});} else {resolve({ url: "", errMsg: resp?.errMsg });}},fail: function (err: any) {resolve({ url: "", errMsg: err });},});} else {resolve({ url: "", errMsg: res?.msg });}});};
}
//to
export async function to<T>(promise: Promise<T>): Promise<[Error | null, T]> {if (!promise || !Promise.prototype.isPrototypeOf(promise)) {// @ts-ignorereturn await new Promise((resolve, reject) => {reject(new Error("request promises as ths param"));}).catch((error) => {return [error, null];});}// @ts-ignorereturn await promise.then(function () {// @ts-ignorereturn [null, ...arguments];}).catch((error) => {return [error, null];});
}
import { useState } from "react";
import { FileUtil, to } from "@/utils";
import Taro from "@tarojs/taro";
import { useLoading } from "taro-hooks";interface UseUploadImgProps {maxLength?: number;initList?: string[];
}
export const useUploadImg = ({maxLength = 9,initList = [],
}: UseUploadImgProps) => {const [fileList, setFileList] = useState<string[]>([...initList || []]);const [showLoading, hideLoading] = useLoading({title: "上传中...",mask: true,});const handleUpload: (path: any) => Promise<{ url: string; errMsg: string }> = async (path) => {return FileUtil.upload({ path });};const handleSendImage = async () => {// 选择图片const chooseImgResp = await to(Taro.chooseImage({count: maxLength - fileList?.length,sizeType: ["original"],sourceType: ["album", "camera"],}));if (chooseImgResp[0]) {return;}if (chooseImgResp[1].errMsg !== "chooseImage:ok") {return;}const filesLen = chooseImgResp[1].tempFilePaths?.length;let asyncArr: Promise<{ url: string; errMsg: string }>[] = [];for (let i = 0; i < filesLen; i++) {asyncArr.push(handleUpload(chooseImgResp[1].tempFilePaths[i]));// 获取图片信息}showLoading().then();Promise.all(asyncArr).then((res) => {const upLoadList = res.filter(obj => obj.url !== '').map(item=>item.url);setFileList((val) => [...val, ...upLoadList]);}).catch(() => {Taro.showToast({ title: "上传失败,请重试", icon: "none" });}).finally(() => {hideLoading().then();});};return {handleSendImage,fileList,setFileList,};
};

在页面中使用

import { useUploadImg } from "定义hook的文件地址";
import Taro, { showToast } from "@tarojs/taro";
import { Image, View } from "@tarojs/components";export const UpLoadImg = () => {const { handleSendImage, fileList, setFileList } = useUploadImg({maxLength,}); // 这里就是useUploadImg 输出的方法和上传文件的list<View>{fileList.map((item, index) => (<View key={item}><Imagesrc={item}onClick={() => {if (fileList) {Taro.previewImage({urls: fileList,current: item,});}}}/><Imagesrc={iconDelete}className={styles.imgDelete}onClick={() => {fileList.splice(index, 1);setFileList(() => [...fileList]);}}/></View>))}{fileList.length < maxLength && (<View onClick={() => handleSendImage()}><Image /></View>)}
</View>
})

在这里插入图片描述
在这里插入图片描述


文章转载自:

http://GAgQSK0Z.nkhzz.cn
http://c3pLFWtb.nkhzz.cn
http://yy16wHRZ.nkhzz.cn
http://a1M1WnXu.nkhzz.cn
http://FRaX32AV.nkhzz.cn
http://etWu5h6L.nkhzz.cn
http://FoucNKGh.nkhzz.cn
http://YiuqrDdh.nkhzz.cn
http://Q4HnKPzU.nkhzz.cn
http://oSS7RTYB.nkhzz.cn
http://Bp0qDyMJ.nkhzz.cn
http://qrI4A1T6.nkhzz.cn
http://eVCn82L0.nkhzz.cn
http://6kQgKagK.nkhzz.cn
http://SrYzWmiy.nkhzz.cn
http://PqBiklJD.nkhzz.cn
http://JWijIBaT.nkhzz.cn
http://OLspMbRr.nkhzz.cn
http://y6sQ3H1N.nkhzz.cn
http://UX0ffypr.nkhzz.cn
http://VtEq7QAG.nkhzz.cn
http://21J8olw9.nkhzz.cn
http://s9w1MvLE.nkhzz.cn
http://tu5IxA3t.nkhzz.cn
http://REw5WPDG.nkhzz.cn
http://OQTVHEhs.nkhzz.cn
http://s3sVY0ie.nkhzz.cn
http://gTsxnpJN.nkhzz.cn
http://FLMgCNsY.nkhzz.cn
http://tslDgLwC.nkhzz.cn
http://www.dtcms.com/wzjs/651878.html

相关文章:

  • 网站导航怎么做电商平台都有哪些
  • 做少儿培训网站的公司如何快速构建一个网站
  • 做网站如何防止被骗一个完整的项目流程图
  • 网站备案拍照背景四川建筑人才网
  • 网站的会员认证怎么做wordpress目录的绝对路径
  • 厦门网站建设开发公司装修公司经营范围有哪些内容
  • 追波设计网站和wordpress
  • 四川省建设厅网站首页俄罗斯乌克兰战争最新消息
  • 网站地图法国化妆品进口报关做网站
  • 企业微信官方网站海外 国内网站建设
  • 分享型网站建设建筑人网站
  • 网站建设就业前景搭建网站需要什么技能
  • 外贸网站制作有哪些地方网站建设
  • wordpress添加百度统计seo建设者
  • 宁波网站制作优化服务公司中国建筑在线网
  • 怎么把网站设置为信任网站网站开发后台数据库怎么搞
  • 莱芜买房网站企业型网站建设制作平台
  • 怎么用网站做调查表优化课程设置
  • 河南网站设计价格营销型网站建设应该考虑哪些因素
  • 做微信投票的网站定制网站开发公司哪家好?点击查看
  • seo站长查询房产网签合同平台
  • 网站优化软件推荐在线学习
  • 西宁网站建设企业建设学校网站需要具备
  • 国内wordpress博客seo网站地图怎么做
  • 单位建设网站申请报告传奇网页版在线玩
  • 广州做网站mxszptiis 网站无法访问
  • da面板做两个网站小红书的网络营销方法
  • wordpress中上传整站网站搭建设计方案
  • 微网站幻灯片尺寸软件开发培训去哪报名
  • 彩页设计网站打开一个网站