uni-app uni-file-picker文件上传实现拍摄从相册选择获取图片上传文档服务器(H5上传-微信小程序上传)

这篇具有很好参考价值的文章主要介绍了uni-app uni-file-picker文件上传实现拍摄从相册选择获取图片上传文档服务器(H5上传-微信小程序上传)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

  • 最近在使用uni-app写H5移动端,有一个从手机拍摄从相册选择获取图片上传到文档服务器功能。

  • 查阅uni-app发现关于上传图片,uni-file-picker文件上传,uni.chooseImage,uni.uploadFile

  • H5上传时它和pc端原理差不多,都是file对象上传,PC端是通过new file对象,uni-app是直接提供了

  • 微信小程序上传时是需要微信提供的临时路径,uni-app是直接提供了

  • 注意H5上传和微信小程序uni.uploadFile()上传参数是不一样的二者不能共存,注意看注释

自己理解

1.uni.chooseImage是uni-app提供调用手机拍摄从相册选择获取图片的api

2.uni-file-picker文件上传是uni-app封装上传图片和文件的组件,它包含uni.chooseImage这个api

3.uni.uploadFile()是uni-app为了弥补原生uni.request缺陷,可以直接写文挡服务器地址

4.uni.uploadFile()在H5上传和微信小程序上传时参数不一样不能共存-注意看文档下面有讲解

5.uni-file-picker文件上传默认是我们有上传空间uniCloud,所以属性中没有设置上传属性

6.至于什么是上传空间uni-app在创建项目时有选择,没有上传空间借助uni.uploadFile()上传文档服务器

7.最终我们用uni-file-picker文件上传(包含uni.chooseImage)+ uni.uploadFile()就可以实现这个功能

注意点

1.如果uni-app项目是没有上传空间的化,uni-file-picker文件上传这几个事件是不会触发的

uniapp拍照上传,uni-app-小程序,uni-app,uni-file-picker,拍摄从相册选择,uni.uploadFile,H5上传图片,微信小程序上传图片

uniapp拍照上传,uni-app-小程序,uni-app,uni-file-picker,拍摄从相册选择,uni.uploadFile,H5上传图片,微信小程序上传图片

2.uni.chooseImage-api返回值-注意H5上传和微信小程序上传参数不一样

H5上传时-文档写的是tempFiles就是一个File对象,直接把这个里面0项当参数可能会报错

微信小程序上传时-直接取临时路径即可

// h5上传-需要文件file对象
const tempFilePaths = e.tempFiles[0].file;
// 微信小程序上传-需要微信临时提供临时地址
const tempFilePaths = e.tempFilePaths;

uniapp拍照上传,uni-app-小程序,uni-app,uni-file-picker,拍摄从相册选择,uni.uploadFile,H5上传图片,微信小程序上传图片

uniapp拍照上传,uni-app-小程序,uni-app,uni-file-picker,拍摄从相册选择,uni.uploadFile,H5上传图片,微信小程序上传图片

3.uni.uploadFile()发送请求时

3.1uni.uploadFile()发送请求时会根据是在H5环境还是微信环境配置参数不一样(不能并存)

uniapp拍照上传,uni-app-小程序,uni-app,uni-file-picker,拍摄从相册选择,uni.uploadFile,H5上传图片,微信小程序上传图片

3.2它会跟axios一样会在外面帮我们包一层data,取值时候需要多写一个data(res.data.data)

3.2它的返回结果时一个json格式字符串,需要转换成js对象,不转换值是灰色并且取不出来

uniapp拍照上传,uni-app-小程序,uni-app,uni-file-picker,拍摄从相册选择,uni.uploadFile,H5上传图片,微信小程序上传图片

uniapp拍照上传,uni-app-小程序,uni-app,uni-file-picker,拍摄从相册选择,uni.uploadFile,H5上传图片,微信小程序上传图片

4.uni-file-picker文件上传,通过:value="fileLists"回显时候需要注意必须要有3个值

uniapp拍照上传,uni-app-小程序,uni-app,uni-file-picker,拍摄从相册选择,uni.uploadFile,H5上传图片,微信小程序上传图片

5.文档和很多文档都说没有上传空间时候需要手动上传,其实不用专门写个按钮使用手动上传

5.1手动上传只是获取图片一样在点击按钮时候,在上传,没有实质性作用,不用专门写手动上传

5.2就算我们没有绑定上传空间,也不用手动上传直接选择图片它就会触发@select="select" 配合uni.uploadFile()上传即可

uniapp拍照上传,uni-app-小程序,uni-app,uni-file-picker,拍摄从相册选择,uni.uploadFile,H5上传图片,微信小程序上传图片

6.效果图

 uniapp拍照上传,uni-app-小程序,uni-app,uni-file-picker,拍摄从相册选择,uni.uploadFile,H5上传图片,微信小程序上传图片

代码实现

1.在form表单中-uni-forms编写上传组件代码-uni-forms

title不写的化右边 0/9 上传图片限制不会出现

<uni-forms-item label="">
    <uni-file-picker limit="9" :value="fileLists" title="维修单据"                                 :image-styles="imageStyles"
        :sourceType="sourceType" @select="select"                                                 @progress="progress" @success="success"
        @fail="fail" @delete="deletea" />
</uni-forms-item>

2.data中变量

// 图片回显
fileLists: [],
// 上传图片的样式
imageStyles: {
        width: 90,
        height: 90,
        },
// uni.chooseImage值,从相册选择,拍摄
sourceType: ['album', 'camera'],

3.method事件-注意H5上传和微信小程序上传只能存在一个参数不一样-注意看注释

// 获取上传状态
            select(e) {
                console.log('选择文件:', e)
                // 解决file对象取值问题
                // h5上传-需要文件file对象
				// const tempFilePaths = e.tempFiles[0].file;
				// 微信小程序上传-需要微信临时提供临时地址
				const tempFilePaths = e.tempFilePaths;
                uni.uploadFile({
                    url: '文档服务器地址',
                    // 要上传文件对象-h5和微信小程序上传参数不一样只能存在一个
                    // H5上传
					// file: tempFilePaths,
					// 微信小程序上传
					filePath: tempFilePaths[0],
                    //文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
                    name: 'file',
                    // 请求头设置
                    // 我们是需要token和用户id登录时存从uni-app数据存储中取
                    header: {
                        "token": uni.getStorageSync('token'),
                        "tenant-id": uni.getStorageSync('tenant-id')
                    },
                    // 成功函数
                    success: (res) => {
                        // uni.uploadFile默认在外面包了一层data
                        console.log('上传成功', res.data);
                // uni.uploadFile返回来的结果默认是JSON格式字符串,需要用JSON.parse转换成js对象
                        console.log('上传数据转换',JSON.parse(res.data));
                        // 取到文档服务器的值
                        let uploaddata = JSON.parse(res.data)
                        let x = {}
                        // 下面3个值是uni-app规定的一个不能少
                        x.url = uploaddata.url
                        x.extname = ''
                        x.name = uploaddata.filename
                        this.fileLists.push(x)
                    },
                    // 失败提示用户重新上传
                    fail: error => {
                        console.log('失败', error);
                    }
                })
            },
            // 获取上传进度
            progress(e) {
                // 没有上传空间,不会执行 
                console.log('上传进度:', e)
            },
​
            // 上传成功
            success(e) {
                // 没有上传空间,不会执行 
                console.log('上传成功')
            },
​
            // 上传失败
            fail(e) {
                // 没有上传空间,不会执行 
                console.log('上传失败:', e)
            },
            // 删除
            deletea(e) {
                console.log('删除图片', e);
            },

总结:这是试过了成功的,不要直接复制一步一步来,出了问题一步一步看,不要急,不要给误导了。

经过这一趟流程下来相信你也对 uni-app uni-file-picker文件上传实现拍摄从相册选择获取图片上传文档服务器(H5上传-微信小程序上传) 有了初步的深刻印象,但在实际开发中我 们遇到的情况肯定是不一样的,所以我们要理解它的原理,万变不离其宗。加油,打工人!

什么不足的地方请大家指出谢谢 -- 風过无痕文章来源地址https://www.toymoban.com/news/detail-558174.html

到了这里,关于uni-app uni-file-picker文件上传实现拍摄从相册选择获取图片上传文档服务器(H5上传-微信小程序上传)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-ui 中 uni-file-picker组件限制用户上传大小超过大小自动去除

    uni-ui 中 uni-file-picker组件限制用户上传大小超过大小自动去除 找到该组件位置打开uni-file-picker 在props中添加自己想起的名字绑定限制大小 找到chooseFileCallback方法插入代码: 其他页面调用即可

    2024年01月15日
    浏览(36)
  • uni-file-picker上传图片到后端服务器并存入数据库

    最近在做一个需求,使用uniapp上传用户头像。后端会有一个处理上传图片返回图像链接的接口。在uniapp官网关于上传的组件有两个: (1)uni.uploadFile(object) (2)uni-file-picker 如果使用uni.uploadFile,前端的代码大致可以这样写: 这是官网给出的范例。对应的HTML: 然后就是 自

    2024年02月12日
    浏览(30)
  • uniapp中的uni-file-picker组件上传多张图片到服务器,可添加,预览,删除图片

    前言:在uniapp官方文档中的uni-file-picker组件可实现图片上传功能,官方文档:uniapp官网 中的案例不能完全满足需求,官网中默认的是上传到自带的服务空间 以下是代码: view代码: :auto-upload=\\\"false\\\"加上这个取消自动上传 methods方法 选择图片 上传图片 删除图片 上传事例: 参

    2024年02月11日
    浏览(31)
  • uni-app 实现文件上传

    在使用若依的框架时,发现若依移动端框架中已经封装好了一个upload.js用于文件上传,自己在这个版本的基础上稍作改动,成功实现文件上传功能 若依公共的 upload.js  自己再封装一个 js 文件,此处命名 upload.js 但不和若依的文件放在同一个目录下 在文件中调用需要先引入

    2024年02月11日
    浏览(38)
  • uni-app实现上传图片或者文件(直接上代码)

    在webappsRoot文件夹下创建用于接收上传文件的upload文件夹 如果是文件: 上传文件方法也可以上传图片,只需要把extension中改为图片对应为后缀名即可 controller:

    2024年02月11日
    浏览(30)
  • uni-app实现上传文件至云存储的三种方式

    目录 前言 1.在uniCloud WEB控制台中可以直接上传文件 2.客户端api上传或者组件 组件上传 客户端手动api上传 3. 云函数上传文件到云存储 总结 开发者使用 uniCloud 的云存储,无需再像传统模式那样单独去购买存储空间、CDN映射、流量采购等,本篇文章主要讲解如何使用uni-app实现

    2024年02月08日
    浏览(39)
  • 【uni-app】通过uni-app基础组件picker实现选择日期、时间的功能示例(完整代码+图文)

    一、获取日期(基础) 二、获取日期和时间(改进)  

    2024年02月11日
    浏览(27)
  • uni-app之app上传pdf类型文件

    通过阅读官方文档发现, uni.chooseFile 在app端不支持非媒体文件上传; 可以使用这个插件,验证过可以上传pdf;具体使用可以去看文档 插件地址 就是还是会出现相机,这个可能需要自己解决下 实现功能:上传只能上传一个,如果文件列表有值点击上传进行toast提示,不再出现

    2024年02月13日
    浏览(35)
  • uni-app实现图片上传功能

    效果 代码  

    2024年02月13日
    浏览(38)
  • uni-app 实现图片上传添加水印操作

    改进原因: 1、Canvas 2D(新接口)需要显式设置画布宽高,默认:300 150,最大:1365 1365 ios 无法上传较大图片的尺寸,固对超过此尺寸的图片进行了等比缩放的处理; 2、在页面中设置canvas宽高,导致页面有滚动条;现在采用离屏的canvas,但是离屏的canvas,canvasToTempFilePath方法

    2024年02月07日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包