uniCloud 云对象url化

82 阅读1分钟
  • 因为没有服务器,刚好想练习一下umi和ant-design-pro,又想到了unicloud云开发,于是又浅搞了一下,这次搞的云对象
  • 不会写文章直接简略贴个代码,大佬们勿喷
//  获取uniId 生成验证码code
	async createCode(params) {
		if (this.getHttpInfo()) {
			params = this.getHttpInfo().body;
			params = params ? params : '{}'
			params = JSON.parse(params)
		}
		const db = uniCloud.database()
		const verifyCodes = db.collection('opendb-verify-codes')
		const uCode = uniCloud.importObject('uni-captcha-co')
		await uniCaptcha['create']({
			scene: params.scene, //来源客户端传递,表示:使用场景值,用于防止不同功能的验证码混用
			uniPlatform: 'h5',
			deviceId: '12345678910'
		})
		let res = await verifyCodes.where({
			scene: params.scene,
			device_uuid: '12345678910',
			state: 0
		}).limit(1).orderBy('created_date', 'desc').get()
		return {
			code: 200,
			data: res.data[0].code,
			msg: ''
		}
	},
// 上传图片只能通过base64格式上传
//云存储有上传文件大小,单个文件不大于5mb, 图片或者资源 可以压缩再转base64
	async uploadFile(params) {
		if (this.getHttpInfo()) {
			params = this.getHttpInfo().body;
			params = params ? params : '{}'
			params = JSON.parse(params)
		}
		let result, data
		if (params.dataUrl) {
			params.dataUrl = params.dataUrl.split(',')[1];
			data = Buffer.from(params.dataUrl, 'base64');
		}
		result = await uniCloud.uploadFile({
			fileContent: data,
			cloudPath: params.name
		})

		return {
			code: 200,
			data: result,
			msg: ''
		}
	},
前端代码
const fileToBase64 = (file:any) => {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.onload = (event:any) => {
      resolve(event.target.result);
    };
    reader.onerror = (error) => {
      reject(error);
    };
    reader.readAsDataURL(file);
  });
};
//图片上传
  const customRequest = (val:Record<string,any>) => {
    setLoading(true);
    fileToBase64(val.file).then(async (base64) => {
      let data = await uploadFile({
        name: val.file.name,
        dataUrl: base64,
      });
      setFormModel({
        ...formModel,
        img: data.data.fileID,
      });
      setLoading(false);
    });
  };