请求下载图片-- 如果纯在图片 -->_uni.chooseimage(object)">
当前位置:   article > 正文

uni-app之图片点击上传功能实现_uni.chooseimage(object)

uni.chooseimage(object)

目录

    • uni.chooseImage(OBJECT)

    • uni.uploadFile(OBJECT)

    • 点击上传图片

前言

uniapp上传一张图片大概分为二个步骤

  1. 使用uni.chooseImage(OBJECT)获取到图片的路径
  2. 使用uni.uploadFile(OBJECT)得到路径将其上传到页面

文章内容

一 、uni.chooseImage(OBJECT)

从本地相册选择图片或使用相机拍照。

OBJECT 参数说明:

 更多属性请到官网查看:uni.chooseImage(OBJECT) | uni-app官网 (dcloud.net.cn)icon-default.png?t=N6B9https://uniapp.dcloud.net.cn/api/media/image.html

使用方法:
  1. uni.chooseImage({
  2. count: 1, //最多可以选择的图片张数,默认9
  3. sizeType: ['compressed'], //original 原图,compressed 压缩图,默认二者都有
  4. sourceType: ['album'],
  5. //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
  6. success: (res) => { //成功返回的函数
  7. console.log('图片路径为:', res.tempFilePaths[0]) //选着的图片
  8. },
  9. fail: (err) => { //图片接口调用失败的回调函数
  10. console.log('chooseImage fail', err)
  11. }
  12. })

二、uni.uploadFile(OBJECT)

将本地资源上传到开发者服务器,客户端发起一个 POST 请求,其中 content-type 为 multipart/form-data。 如页面通过 uni.chooseImage 等接口获取到一个本地资源的临时文件路径后,可通过此接口将本地资源上传到指定服务器。

OBJECT 参数说明
参数名类型必填说明平台差异说明
urlString开发者服务器 url
filesArray是(files和filePath选其一)需要上传的文件列表。使用 files 时,filePath 和 name 不生效。App、H5( 2.6.15+)
fileTypeString见平台差异说明文件类型,image/video/audio仅支付宝小程序,且必填。
fileFile要上传的文件对象。仅H5(2.6.15+)支持
filePathString是(files和filePath选其一)要上传文件资源的路径。
nameString文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
headerObjectHTTP 请求 Header, header 中不能设置 Referer。

  更多属性请到官网查看:

uni.uploadFile(OBJECT) | uni-app官网 (dcloud.net.cn)icon-default.png?t=N6B9https://uniapp.dcloud.net.cn/api/request/network-file.html

使用方法:
  1. var imageSrc = res.tempFilePaths[0] //将图片的地址赋值给imageSrc
  2. uni.uploadFile({ //上传图片
  3. url: '@/detail_3/detail_3.vue', //开发者服务器 url
  4. filePath: imageSrc, //要上传文件资源的路径。
  5. fileType: 'image', //文件类型,image/video/audio
  6. name: 'data', //文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
  7. success: (res) => { //接口调用成功的回调函数
  8. console.log('uploadImage success, res is:', res)
  9. uni.showToast({ //消息提示框
  10. title: '上传成功',
  11. icon: 'success',
  12. duration: 1000
  13. }),
  14. uni.setStorage({
  15. key:'image1',
  16. data:imageSrc
  17. })
  18. this.imageSrc = imageSrc
  19. },
  20. fail: (err) => { //接口调用失败的回调函数
  21. console.log('失败返回:', err);
  22. uni.showModal({ //消息提示框
  23. content: err.errMsg, //错误信息
  24. showCancel: false
  25. });
  26. }
  27. });

总结

上传本地的电脑图片,需要使其相结合,将uni.chooseImage(OBJECT)得到的路径传给uni.uploadFile(OBJECT)使其上传

完整代码如下

  1. <template>
  2. <view class="box" style="width: 750rpx;">
  3. <page-head class="tit">请求下载图片</page-head>
  4. <view class="demo">
  5. <block v-if="imageSrc">
  6. <!-- 如果纯在图片 -->
  7. <image :src="imageSrc" class="image" mode="widthFix"></image>
  8. </block>
  9. <block v-else>
  10. <!-- 没有原始图片 -->
  11. <view class="uni-hello-addfile" @click="chooseImage">+ 选择图片</view>
  12. </block>
  13. </view>
  14. </view>
  15. </template>
  16. <script>
  17. export default {
  18. data() {
  19. return {
  20. title: "请求下载图片",
  21. imageSrc: ''
  22. }
  23. },
  24. onLoad() {
  25. },
  26. onUnload() {
  27. // 关闭页面时
  28. this.imageSrc = '';
  29. },
  30. methods: {
  31. chooseImage: function() {
  32. uni.chooseImage({
  33. count: 1, //最多可以选择的图片张数,默认9
  34. sizeType: ['compressed'], //original 原图,compressed 压缩图,默认二者都有
  35. sourceType: ['album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
  36. success: (res) => { //成功返回的函数
  37. console.log('图片路径为:', res.tempFilePaths[0]) //选着的图片
  38. var imageSrc = res.tempFilePaths[0] //将图片的地址赋值给imageSrc
  39. uni.uploadFile({ //上传图片
  40. url: '@/detail_3/detail_3.vue', //开发者服务器 url
  41. filePath: imageSrc, //要上传文件资源的路径。
  42. fileType: 'image', //文件类型,image/video/audio
  43. name: 'data', //文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
  44. success: (res) => { //接口调用成功的回调函数
  45. console.log('uploadImage success, res is:', res)
  46. uni.showToast({ //消息提示框
  47. title: '上传成功',
  48. icon: 'success',
  49. duration: 1000
  50. }),
  51. uni.setStorage({
  52. key:'image1',
  53. data:imageSrc
  54. })
  55. this.imageSrc = imageSrc
  56. },
  57. fail: (err) => { //接口调用失败的回调函数
  58. console.log('失败返回:', err);
  59. uni.showModal({ //消息提示框
  60. content: err.errMsg, //错误信息
  61. showCancel: false
  62. });
  63. }
  64. });
  65. },
  66. fail: (err) => { //图片接口调用失败的回调函数
  67. console.log('chooseImage fail', err)
  68. // 判断是否允许调用摄像头
  69. uni.getSetting({
  70. success: (res) => {
  71. let authStatus = res.authSetting['scope.album'];
  72. if (!authStatus) {
  73. uni.showModal({
  74. title: '授权失败',
  75. content: 'Hello uni-app需要从您的相册获取图片,请在设置界面打开相关权限',
  76. success: (res) => {
  77. if (res.confirm) {
  78. uni.openSetting()
  79. }
  80. }
  81. })
  82. }
  83. }
  84. })
  85. }
  86. })
  87. }
  88. }
  89. }
  90. </script>
  91. <style>
  92. .image {
  93. width: 100%;
  94. }
  95. .tit {
  96. font-size: 40px;
  97. display: flex;
  98. justify-content: center;
  99. background-color: antiquewhite;
  100. }
  101. .demo {
  102. background: #FFF;
  103. padding: 50rpx;
  104. }
  105. .uni-hello-addfile {
  106. width: 100%;
  107. height: 500rpx;
  108. text-align: center;
  109. font-size: 40px;
  110. display: flex;
  111. align-items: center;
  112. justify-content: center;
  113. background-color: antiquewhite;
  114. }
  115. .uni-hello-addfile:active {
  116. background-color: aqua;
  117. }
  118. </style>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/190298
推荐阅读
相关标签
  

闽ICP备14008679号