小程序 云存储、云下载和云暂时链接

云函数中进行初始化操作
	const cloud = require('wx-server-sdk')
	const fs = require('fs')
	const path = require('path')		支持nodejs模块进行文件操作
	
	cloud.init({
	  env: cloud.DYNAMIC_CURRENT_ENV
	})
	exports.main = async (event, context) => {
	  const fileStream = fs.createReadStream(path.join(__dirname, 'demo.jpg'))
	  return await cloud.uploadFile({
	    cloudPath: 'demo.jpg',
	    fileContent: fileStream,
	  })
	}

小程序中进行云存储等操作:

	云存储
		如图片:
			回调函数中的this执向不同
			
			let that =this;
			wx.chooseImage({
				success:function(res){
					wx.cloud.uploadFile({				
			          cloudPath:xx+'.png',				上传到云服务器的id
			          filePath:res.tempFilePaths[0],	文件临时路径,如上一个chooseImage的成功回调函数返回结果中的文件暂时路径
			          success:function(res){
						res.fileID;获取上传文件的id,可直接使用
				})
			},
			fail:function(){xxx}
		})
		
		当无success、fail和complete其中一个时,会返回Promise
	
	云下载:
        wx.cloud.downloadFile({
            fileID:'云存储返回的fileID',
            success(res)
            {
                res.tempFilePath;	返回文件地址

            }
        })
        当无success、fail和complete其中一个时,会返回Promise
        
    云删除:
    	wx.cloud.deleteFile({
            fileList:['fileID'],
            success(res)
            {
                console.log(res.fileList);
            }
        })
        当无success、fail和complete其中一个时,会返回Promise
        
    云临时链接:
    	可以根据文件ID换取临时文件网络链接,公有读的文件获取的链接不会过期,私有的文件获取的链接十分钟有效期。一次最多取 50 个
    	wx.cloud.getTempFileURL({
		  fileList: [{
		    fileID: 'fileID',
		    maxAge: 60 * 60, 	链接有效时间
		  }],
		  success: res => {
		   
		    console.log(res.fileList)
		  },
		  fail: err => {
		   
		  }
		})
    	当无success、fail和complete其中一个时,会返回Promise
   
  组件支持直接传入云文件ID:
  	组件		属性
	image		src
	video		src、poster
	cover-image	src
	
  接口支持直接传入云文件ID: 
  	接口						参数
  	getBackgroundAudioManager	src
	createInnerAudioContext		src
	previewImage				urls、current

代码示例:

  uploadEvent(){ 
    let that=this;
    wx.chooseImage({ 
      success: function(res) { 
        console.log(res);
        //将选中的图片上传到云服务器
        wx.cloud.uploadFile({ 
          //上传到云服务器的id
          cloudPath:new Date().getTime()+'.png',
          //上一个chooseImage的成功回调函数返回结果中的文件暂时路径
          filePath:res.tempFilePaths[0],
          success:function(res2){ 
            console.log(res2);
            let arr=that.data.imgSrc;
            arr.push(res2.fileID);
            that.setData({ 
              imgSrc: arr
            });
          }
        })
        
      },
      fail:function(res)
      { 
        console.log('error');
      }
    })

  }
})

Taro代码示例:

import Taro from '@tarojs/taro'
import { View,Text,Button,Image} from '@tarojs/components'
import React,{ Component} from 'react'

import { add } from '../../utils/db/index'

class Game extends Component{    

    state={ 
        imgs:[],
        cloudImgs:[],
        fileID:''
    }

    componentDidMount()
    { 
        Taro.cloud.init({ 
            env: 'jeff-ssr'
        })
    }

    click=()=>{ 

        Taro.cloud.callFunction({ 
            name: 'add',
            //传入的数据
            data: { 
               a: 1,
               b: 10,
            },
            //成功回调,参数为云函数中的返回内容
            success:function(res)
            { 
              console.log(res);
            },
            fail()
            { 
                console.log('err')
            }
          })
    }

    _add=async ()=>{ 
        let res = await add(
                { name:'复仇者联盟',img:'https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3659875041,1653589983&fm=26&gp=0.jpg'},
                // {name:'蜘蛛侠',img:'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2665014954,1139410527&fm=26&gp=0.jpg'},
                // {name:'雷神',img:'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1747873458,3198507694&fm=26&gp=0.jpg'},
                // {name:'钢铁侠',img:'https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3179099924,1007440925&fm=26&gp=0.jpg'},
                // {name:'美国队长',img:'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=3035539664,2279765935&fm=26&gp=0.jpg'},
              
            )


    }

    _chooseImage()
    { 
        let that=this;
        Taro.chooseImage({ 
            count:2,
            sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
            sourceType: ['album', 'camera','user','environment'], // 可以指定来源是相册还是相机,默认二者都有,在H5浏览器端支持使用 `user` 和 `environment`分别指定为前后摄像头
            success: function (res) { 
              // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
              var tempFilePaths = res.tempFilePaths;
              that.setState({ 
                  imgs:tempFilePaths
              })
            }
        })
    }

    _cloudSave=(e,imgPath)=>
    { 
        let that=this;
        console.log(imgPath);
        Taro.cloud.uploadFile({ 
            cloudPath:new Date().getTime()+'.jpg',
            filePath:imgPath,
            success:(res)=>
            { 
                console.log('ww')
                that.setState({ 
                    fileID:res.fileID
                })
                
            },
            fail()
            { 
                console.log('ddd');
            }


        })
    }

    _cloudDown=()=>{ 
        let that=this;
        Taro.cloud.downloadFile({ 
            fileID:that.state.fileID,
            success(res)
            { 
                let cloudImgs=that.state.cloudImgs;
                cloudImgs.push(res.tempFilePath);
                that.setState({ 
                    cloudImgs
                })
            }
        })
    }

    _cloudDelete=()=>{ 
        Taro.cloud.deleteFile({ 
            fileList:['fileID'],
            success(res)
            { 
                console.log(res.fileList);
            }
        })
    }

    render()
    { 
        const { imgs,cloudImgs}=this.state

        return(

            <View>
                <Text>game</Text>
                <Button onClick={ this.click}>测试云函数</Button>
                <Button onClick={ this._add}>添加云数据库</Button>
                <Button onClick={ this._chooseImage.bind(this)}>调用本地相册</Button>
                <Button onClick={ (e)=>{ this._cloudSave(e,imgs[0])}}>调用云存储</Button>
                <Button onClick={ this._cloudDown}>调用云下载</Button>
                <Button onClick={ this._cloudDelete}>调用云删除</Button>

                { 
                    cloudImgs.map((item,index)=>{ 
                        return(
                            <Image src={ item}/>
                        )
                    })
                } 

            </View>
        )
    }
}

export default Game
    原文作者:神奇大叔
    原文地址: https://blog.csdn.net/weixin_43294560/article/details/104745281
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞