当前位置:   article > 正文

uni.app上传照片并将路径转换成base64传给后端_uniapp blob(url)转成base64

uniapp blob(url)转成base64

大家好,在这里记录一篇困扰了我一天的问题:Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'. at eval (test.vue:121)   ,因为我是用uni.app

上传的照片,然后上传之后显示照片的路径为blob:http://..............但是我要的是base64格式的照片传给后端,所以我现在要将blog格式的照片转换成base64

一、使用常见的readAsDataURL()方法等

不出意外还是同样的报错:

Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'. at eval (test.vue:121)

总之,找了很多例如将blob转换成url,再将url转换成base64,或者将blob直接转换成base64等等,但都是错的,毫无变化;

二、更改修改按钮,比如改为input

看了好多大家都是使用<input type="file" >格式的上传按钮,但是我的就是如下图:

我觉得挺好的,所以这不想改,但是又没办法,就去尝试改一下,但是还是没啥变化,同样的报错、、、、

三、使用uni.app来操作

最后想到既然获取是用uni.app那么转也可以吧,然后就去搜了一下,果然有方法uni.getImageInfo()

果然可以,“解铃人还须系铃人”!

总结

全部代码:

  1. PutPhoto: function() {
  2. uni.chooseImage({
  3. count: 1, //图片张数,默认9
  4. sizeType: ['compressed'], //original 原图,compressed 压缩图,
  5. sourceType: ['album'], //album 从相册选图,camera 使用相机,
  6. success: (res) => { //成功返回的函数
  7. // console.log('图片路径为:', res.tempFilePaths[0]) //当前选中的图片
  8. // var imageSrc = res.tempFilePaths[0] //将图片的地址赋值给imageSrc
  9. // 转base64
  10. uni.getImageInfo({
  11. src:res.tempFilePaths[0],
  12. success:(path)=>{
  13. pathToBase64(path.path).then(base64=>{
  14. console.log("这是转之后的",base64);
  15. var imageBase64=base64;
  16. uni.request({ //上传图片
  17. url: "xxxxxxxxxxx",//后端接口
  18. timeout: 10000,
  19. method: 'POST',
  20. dataType: 'json',
  21. data: {
  22. personNo:this.employeeId,
  23. imageBase64:imageBase64,
  24. },
  25. success: (res) => { //接口调用成功的回调函数
  26. console.log('uploadImage success, res is:', res)
  27. uni.showToast({ //消息提示框
  28. title: '修改成功',
  29. icon: 'success',
  30. duration: 1000,
  31. }),
  32. uni.setStorage({
  33. key:'image1',
  34. data:imageBase64
  35. })
  36. this.getAvatar(),//上传并实时刷新照片
  37. this.imageBase64 =imageBase64
  38. },
  39. fail: (err) => { //接口调用失败的回调函数
  40. console.log('失败返回:', err);
  41. uni.showModal({ //消息提示框
  42. content: err.errMsg, //错误信息
  43. showCancel: false
  44. });
  45. }
  46. });
  47. })
  48. .catch(error=>{
  49. console.log(error)
  50. })
  51. }
  52. })
  53. },
  54. fail: (err) => { //图片接口调用失败的回调函数
  55. console.log('chooseImage fail', err)
  56. // 判断是否允许调用摄像头
  57. uni.getSetting({
  58. success: (res) => {
  59. let authStatus = res.authSetting['scope.album'];
  60. if (!authStatus) {
  61. uni.showModal({
  62. title: '授权失败',
  63. content: 'Hello uni-app需要从您的相册获取图片,请在设置界面打开相关权限',
  64. success: (res) => {
  65. if (res.confirm) {
  66. uni.openSetting()
  67. }
  68. }
  69. })
  70. }
  71. }
  72. })
  73. }
  74. })
  75. },

最后,希望可以帮助到你们!我也会继续努力哦!(송강사랑해)

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

闽ICP备14008679号