当前位置:   article > 正文

uni-file-picker组件的使用——小程序上传图片(多张\一张)_uni-file-picker回显多图片

uni-file-picker回显多图片

上传多张图片(对接过后端接口):

  1. <uni-file-picker ref="filePicker" limit="9" :value="fileList.url" title="最多上传9张" :image-styles="imageStyles"
  2. :sourceType="sourceType" @select="select" @progress="progress" @success="success" @fail="fail"
  3. @delete="deletea" />
  4. // 图片回显
  5. fileList: [],
  6. // 上传图片的样式
  7. imageStyles: {
  8. width: 90,
  9. height: 90,
  10. },
  11. // uni.chooseImage值,从相册选择,拍摄
  12. sourceType: ['album', 'camera'],
  13. // 获取上传状态
  14. select(e) {
  15. // 获取本地存储中的认证令牌
  16. const accessToken = uni.getStorageSync('accessToken');
  17. console.log('选择文件:', e)
  18. // 解决file对象取值问题
  19. // 微信小程序上传-需要微信临时提供临时地址
  20. const tempFilePaths = e.tempFilePaths;
  21. // 处理每张选中的图片
  22. tempFilePaths.forEach(tempFilePath => {
  23. uni.uploadFile({
  24. url: apiBaseUrl + '/image/importPhoto',
  25. filePath: tempFilePath,
  26. // 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
  27. name: 'fileList',
  28. header: {
  29. 'Content-Type': 'application/json',
  30. 'Authorization': `Bearer ${accessToken}`
  31. },
  32. // 成功函数
  33. success: (res) => {
  34. console.log('上传成功', res.data);
  35. // uni.uploadFile返回来的结果默认是JSON格式字符串,需要用JSON.parse转换成js对象
  36. console.log('上传数据转换', JSON.parse(res.data));
  37. let uploaddata = JSON.parse(res.data)
  38. let x = {}
  39. // 下面3个值是uni-app规定的一个不能少
  40. x.url = uploaddata.message
  41. x.extname = ''
  42. x.name = ''
  43. this.fileList.push(x)
  44. },
  45. // 失败提示用户重新上传
  46. fail: error => {
  47. console.log('失败', error);
  48. }
  49. })
  50. });
  51. },
  52. // 获取上传进度
  53. progress(e) {
  54. // 没有上传空间,不会执行
  55. console.log('上传进度:', e)
  56. },
  57. // 上传成功
  58. success(e) {
  59. // 没有上传空间,不会执行
  60. console.log('上传成功')
  61. },
  62. // 上传失败
  63. fail(e) {
  64. // 没有上传空间,不会执行
  65. console.log('上传失败:', e)
  66. },
  67. // 删除
  68. deletea(e) {
  69. console.log('删除图片', e);
  70. },
  71. //在需要清空上传过的照片函数里调用
  72. this.$refs.filePicker.clearFiles();

上传一张图片(未对接后端接口):

主要修改位置如下:

  1. <uni-file-picker ref="filePicker" limit="1" :value="fileList.url" title="上传1张" :image-styles="imageStyles"
  2. :sourceType="sourceType" @select="select" @progress="progress" @success="success" @fail="fail"
  3. @delete="deletea" />
  4. activeColor: '#5098FF',
  5. sourceType: ['album', 'camera'],// uni.chooseImage值,从相册选择,拍摄
  6. // 获取上传状态
  7. select(e) {
  8. // 获取本地存储中的认证令牌
  9. const accessToken = uni.getStorageSync('accessToken');
  10. console.log('选择文件:', e)
  11. // 解决file对象取值问题
  12. // 微信小程序上传-需要微信临时提供临时地址
  13. const tempFilePath = e.tempFilePaths[0]; // 获取第一张选中的图片
  14. uni.uploadFile({
  15. url: apiBaseUrl + '/image/importPhoto',
  16. filePath: tempFilePath,
  17. // 文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容
  18. name: 'fileList',
  19. header: {
  20. 'Content-Type': 'application/json',
  21. 'Authorization': `Bearer ${accessToken}`
  22. },
  23. // 成功函数
  24. success: (res) => {
  25. console.log('上传成功', res.data);
  26. // uni.uploadFile返回来的结果默认是JSON格式字符串,需要用JSON.parse转换成js对象
  27. console.log('上传数据转换', JSON.parse(res.data));
  28. let uploaddata = JSON.parse(res.data)
  29. let x = {}
  30. // 下面3个值是uni-app规定的一个不能少
  31. x.url = uploaddata.message
  32. x.extname = ''
  33. x.name = ''
  34. this.fileList = [x]; // 仅保留一张上传的图片
  35. },
  36. // 失败提示用户重新上传
  37. fail: error => {
  38. console.log('失败', error);
  39. }
  40. });
  41. },
  42. // 获取上传进度
  43. progress(e) {
  44. // 没有上传空间,不会执行
  45. console.log('上传进度:', e)
  46. },
  47. // 上传成功
  48. success(e) {
  49. // 没有上传空间,不会执行
  50. console.log('上传成功')
  51. },
  52. // 上传失败
  53. fail(e) {
  54. // 没有上传空间,不会执行
  55. console.log('上传失败:', e)
  56. },
  57. // 删除
  58. deletea(e) {
  59. console.log('删除图片', e);
  60. },

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

闽ICP备14008679号