当前位置:   article > 正文

uni-file-picker文件选择上传

uni-file-picker

基础用法

mode="grid" ,可以使用九宫格样式选择图片

limit="1" ,则最多选择张图片

file-mediatype="image",限定只选择图片

file-extname='png,jpg',限定只选择 png和jpg后缀的图片

auto-upload="false",可以停止自动上传,通过ref调用upload方法自行选择上传时机。与ref="files"搭配使用,this.$refs.files.upload()。

  1. <uni-file-picker
  2. v-model="imageValue"
  3. file-mediatype="image"
  4. mode="grid"
  5. file-extname="png,jpg"
  6. :limit="1"
  7. @progress="progress"
  8. @success="success"
  9. @fail="fail"
  10. @select="select"
  11. />
  12. <script>
  13. export default {
  14. data() {
  15. return {
  16. imageValue:[]
  17. }
  18. },
  19. methods:{
  20. // 获取上传状态
  21. select(e){
  22. console.log('选择文件:',e)
  23. },
  24. // 获取上传进度
  25. progress(e){
  26. console.log('上传进度:',e)
  27. },
  28. // 上传成功
  29. success(e){
  30. console.log('上传成功')
  31. },
  32. // 上传失败
  33. fail(e){
  34. console.log('上传失败:',e)
  35. }
  36. }
  37. }
  38. </script>

案例一(只上传一张图片)

  1. <template>
  2. <view class="container example">
  3. <uni-forms ref="baseForm" :modelValue="baseFormData" label-position="top">
  4. <uni-forms-item label="图片上传">
  5. <uni-file-picker
  6. v-model="imageValue"
  7. fileMediatype="image"
  8. mode="grid"
  9. @select="select"
  10. limit="1"
  11. ></uni-file-picker>
  12. </uni-forms-item>
  13. </uni-forms>
  14. </view>
  15. </template>
  16. export default {
  17. data() {
  18. return {
  19. //图片
  20. imageValue:[],
  21. }
  22. },
  23. methods:{
  24. //图片上传
  25. select(e){
  26. const tempFilePaths = e.tempFilePaths;
  27. //获取图片临时路径
  28. const imgUrl=tempFilePaths[0]
  29. uni.uploadFile({
  30. //图片上传地址
  31. url: 'https://xxx.xxx.com/api/uploadpic/',
  32. filePath: imgUrl,
  33. //上传名字,注意与后台接收的参数名一致
  34. name: 'imgUrl',
  35. //设置请求头
  36. header:{"Content-Type": "multipart/form-data"},
  37. //请求成功,后台返回自己服务器上的图片地址
  38. success: (uploadFileRes) => {
  39. console.log('uploadFileRes',JSON.parse(uploadFileRes.data));
  40. //处理数据
  41. const path=JSON.parse(uploadFileRes.data)
  42. //赋值,前端渲染
  43. this.baseFormData.photo=path.imgUrl
  44. }
  45. });
  46. },
  47. }
  48. }
图片展示

案例二(上传多张图片)

  1. <template>
  2. <view class="container example">
  3. <uni-forms ref="baseForm" :modelValue="baseFormData" :rules="rules" label-position="top">
  4. <uni-forms-item label="图片上传">
  5. <uni-file-picker
  6. v-model="imageValue"
  7. fileMediatype="image"
  8. mode="grid"
  9. @select="select"
  10. @delete="delIMG"
  11. limit="9"></uni-file-picker>
  12. </uni-forms-item>
  13. </uni-forms>
  14. </view>
  15. </template>
  16. <script>
  17. export default {
  18. data() {
  19. return {
  20. imgURL:'',
  21. //图片
  22. imageValue:[],
  23. };
  24. },
  25. methods:{
  26. //图片上传
  27. select(e){
  28. const tempFilePaths = e.tempFilePaths;
  29. const imgUrl=tempFilePaths[0]
  30. uni.uploadFile({
  31. url: 'https://xxx.xxx.com/api/uploadpic2/',
  32. filePath: imgUrl,
  33. name: 'imgUrl',
  34. header:{"Content-Type": "multipart/form-data"},
  35. success: (uploadFileRes) => {
  36. console.log('uploadFileRes',JSON.parse(uploadFileRes.data));
  37. let path=JSON.parse(uploadFileRes.data)
  38. //后端返回的地址,存入图片地址
  39. this.imageValue.push({
  40. url:this.imgURL+path.imgUrl,
  41. name:''
  42. })
  43. console.log('imageValue',this.imageValue)
  44. }
  45. });
  46. },
  47. //图片删除
  48. delIMG(e){
  49. console.log('456',e)
  50. const num = this.imageValue.findIndex(v => v.url === e.tempFilePath);
  51. this.imageValue.splice(num, 1);
  52. }
  53. },
  54. onLoad() {
  55. //全局定义的图片访问地址前缀
  56. this.imgURL=this.$imgURL
  57. }
  58. }
  59. </script>

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

闽ICP备14008679号