首页 > 数据库 >微信小程序云开发图片上传至云存储,提交到云数据库时的出现的3种文件路径问题

微信小程序云开发图片上传至云存储,提交到云数据库时的出现的3种文件路径问题

时间:2024-09-13 21:52:07浏览次数:11  
标签:存储 filePath 微信 至云 fileList res 上传 链接 wx

做本小程序的开发时,考虑到各种因素限制,后台没有自设服务器配置域名,而是使用易上手的原生微信云开发,与之配套的则是云存储、云数据库以及云函数。目前函数处理依旧是在每一个页面的.js文件中,暂未分离迁移至云函数库中。

在开发本微信小程序时,有一部分功能是对用户上传的照片进行暂时的云存储,之后再和其他数据一起提交云数据库中,这时候就需要拿到一个有效的图片存储地址,作为在数据库中的一个存储项。而在实际开发中,我遇到了3种路径,分别是临时路径http://tmp/开头、永久路径https开头以及提交到云存储时获得的fileID,以cloud://开头(代表图片在其中的具体位置)。经过不断地控制台打印输出调试,终于可以区分这3种路径,以及各自的获取方式。

1.wx.chooseMedia()函数

微信小程序开发者文档位置

其功能是拍摄或从手机相册中选择图片或视频

编程序时的代码,chooseImage_next函数实现将用户上传的图片放到云存储中,里面调用wx.chooseMedia函数,其中的cloudFile_next是自定义的处理函数,源码参见下方。

    chooseImage_next() {
        wx.chooseMedia({
          count: 1,
          sizeType:['original','compressed'],
          sourcetype:['album','camera'],
          success: res=> {
            console.log(res)
            var filePath=res.tempFiles[0].tempFilePath
            this.cloudFile_next(filePath)
            console.log(filePath)
            wx.setStorageSync('pic22', filePath)

          },
        });
        
      },

wx.chooseMedia()调用成功后返回的res为

通过对res对象分析,不难看出可以通过res.tempFiles[0].tempFilePath获取到的filePath是以tmp开头的临时链接,客户端可以访问到,但会有时间的限制。

2.wx.cloud.uploadFile()函数

微信小程序开发者文档位置

其功能是将本地资源上传至云存储空间

cloudPath是上传到云存储中的图片在云存储中的具体位置(云存储路径),常用事件戳+".jpg"形式来作为名字

filePath就是上述chooseMedia函数中获取到的res中的filePath,是tmp开头的临时路径

cloudFile_next(path){
        wx.cloud.uploadFile({
            cloudPath:Date.now()+".jpg",  //cloudPath是在云存储中的位置
            filePath:path,
            name: 'file',
            }).then(res=>{
                this.setData({
                    image_next:res.fileID
                })

                wx.setStorageSync('pic22Demo',res)
                
            // 将 局限性较大的临时链接tep开头,几分钟有效 或者 只有客户端能拿到的fileID转化为http开头全网访问的链接
        wx.cloud.getTempFileURL({
            fileList:[res.fileID],
            success(res){
                console.log(fileList)
              console.log('demo picture url',res);
              console.log(res.fileList[0])
              console.log(res.fileList[0].tempFileURL)
            },
           
          })
        })
    },

本函数成功后的res输出为

通过res.fileID可以获得该照片在云存储中的具体位置,通过this.setData就可以将该照片显示在原小程序页面中了。

3.wx.cloud.getTempFileURL()函数

微信小程序开发文档对于该函数的描述如下:

用云文件 ID 换取真实链接,公有读的文件获取的链接不会过期,私有的文件获取的链接十分钟有效期。一次最多取 50 个

其中的参数fileList是指要换取临时链接的云文件 ID 列表,代码中给出的是[res.fileID],即以cloud://开头的图片在云存储中的位置

请求成功后res的返回如下

res.fileList[0]返回如下

不难看到图片的位置已经转化成https开头的浏览器可以访问的永久链接,因此通过res.fileList[0].tempFileURL即可获取得到永久链接。

最后附上演示效果。

这是用户未提交代码前的页面显示,点击照相机按钮上传图片后页面就会变成这样

在云存储中的具体信息为

在数据库中的存储效果如下

标签:存储,filePath,微信,至云,fileList,res,上传,链接,wx
From: https://blog.csdn.net/2301_80482040/article/details/142131878

相关文章

  • 基于java+ssm+vue的垃圾分类微信小程序
    项目介绍现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本垃圾分类小程序就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理......
  • 基于java+ssm+vue的医院挂号预约微信小程序
    项目介绍现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本微信小程序医院挂号预约系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员......
  • CNCB 数据上传
    使用CNCB,中国人自己的数据库。因课题需要,进行数据上传,涉及单细胞、bulk、空间等数据。基于此进行整理。Step1创建账户建议使用单位邮箱,进行注册-按照实际情况进行填写。https://www.cncb.ac.cn/(CNCB官网网站)Step2创建BioPriject基于研究信息进行真实填写简略的信息。......
  • 文件上传/下载后台代码
    importcn.hutool.core.io.FileUtil;importcn.hutool.core.util.StrUtil;importcom.example.common.Result;importorg.springframework.web.bind.annotation.*;importorg.springframework.web.multipart.MultipartFile;importjavax.servlet.http.HttpServletRespons......
  • PbootCMS上传图片被压缩怎么解决
    当使用PbootCMS上传图片时,如果图片被压缩导致质量下降或变得模糊,可以通过调整PbootCMS的相关配置来解决这一问题。以下是一些具体的步骤:1.找到配置文件打开PbootCMS安装目录下的config文件夹。找到config.php文件。同时,也需要检查core文件夹下的convention.php文件。2.调......
  • 后台图片上传提示:”上传失败:存储目录创建失败!
    当PbootCMS后台上传图片时提示“上传失败:存储目录创建失败!”时,这通常意味着服务器没有足够的权限来创建必要的目录以存储上传的图片。以下是一些可能的解决方案:1.修改文件夹权限确定文件夹路径:确认上传图片的目标文件夹路径,通常是网站根目录下的static文件夹。更改权限:通过FT......
  • 如何将本地项目上传到GitHub(SSH连接)
    在个人GitHub中新建项目(远程仓库),添加一个README文件,方便后面验证记住这个默认分支,我这里是main,你的可能是master或其他先复制下SSH地址在项目文件夹中右键打开Git命令行初始化本地仓库,同时指定默认分支为main,与远程仓库的main保持一致gitinit-bmain关联本地Git......
  • UDS 诊断 - RequestUpload(请求上传)(0x35)服务
    UDS诊断服务系列文章目录诊断和通信管理功能单元UDS诊断-DiagnosticSessionControl(诊断会话控制)(0x10)服务UDS诊断-ECUReset(ECU重置)(0x11)服务UDS诊断-SecurityAccess(安全访问)(0x27)服务UDS诊断-CommunicationControl(通信控制)(0x28)服务UDS诊断-TesterPresent......
  • 基于微信小程序的个人行政复议在线预约系统开发-计算机毕业设计源码+LW文档
    摘 要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信APP被用户普遍使用,为方便用户能够可以随时进行个人行政复议在线预约系统微信小程序数据信息理,特开发了基于微信小程序的......
  • 基于微信小程序的童装商城的设计与实现-计算机毕业设计源码+LW文档
    摘要随着移动应用技术的发展,越来越多的用户借助于移动手机、电脑完成生活中的事务,许多的传统行业也更加重视与互联网的结合,由于城镇人口的增加,人们去商场购物总是排着长长的队伍,对于时间紧的人是一个非常头痛的事情,有的人可能就是排队也要用去半天时间,我们为了缓解排队这一个问题......