当前位置:   article > 正文

uniapp-上传图片、上传视频_uniapp上传视频

uniapp上传视频

基于 uniapp 的应用上传图片/视频 资源的实现:

功能涉及的主要 uniapp API 如下:

1.选择图片uni.chooseImage(OBJECT) | uni-app官网

2.选择视频uni.chooseVideo(OBJECT) | uni-app官网

3.上传文件uni.uploadFile(OBJECT) | uni-app官网

下面分别贴出示例代码:

上传图片

  1. // 上传图片
  2. async chooseImages() {
  3. uni.showLoading({
  4. mask: true,
  5. title: '上传中...'
  6. })
  7. // uploadFile 存储需要上传的文件
  8. let uploadFile = ''
  9. // 1.选择图片(这里只能单选)
  10. const res = await uni.chooseImage({
  11. count: 1, // 最多可以选择的图片张数,默认9
  12. // sizeType: ['compressed'], // original 原图,compressed 压缩图,默认二者都有
  13. sourceType: ['album'], // album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
  14. });
  15. // console.log('res:', res);
  16. if(res.length < 2) { // 小于2则没有选择图片
  17. uni.hideLoading()
  18. return
  19. }
  20. uploadFile = res[1].tempFilePaths[0]; // 拿到选择的文件
  21. var that1 = this;
  22. // 2.将选择的图片上传到目标服务器
  23. const arr = await uni.uploadFile({
  24. // 需要上传的地址
  25. url: that1.vuex_uploadAction,
  26. // filePath 需要上传的文件
  27. filePath: uploadFile,
  28. name: 'file',
  29. timeout: 2000, // 超时时间
  30. header: { // HTTP 请求 Header, header 中不能设置 Referer。
  31. token: that1.vuex_token // 挂载请求头为用户的 token
  32. },
  33. });
  34. // console.log(arr);
  35. let data = JSON.parse(arr[1].data)
  36. console.log('data:', data);
  37. if(data.code !== 1) { // 图片上传失败了
  38. uni.hideLoading()
  39. that1.$u.toast(data.msg)
  40. return
  41. }
  42. // 上传成功(把上传成功后的文件路径 push 到页面需要显示的图片数据列表中)
  43. that1.fileList.push(data.data.fullurl)
  44. that1.formData.photo_url.push(data.data.url)
  45. // console.log(that1.fileList);
  46. uni.hideLoading()
  47. },

注:示例代码已封装为一个方法,可直接调用,需要自定义之处可自行参照 API 文档修改,比如从相册选图还是打开相机拍照、可上传的图片数量等

上传视频

  1. // 上传视频
  2. async chooseVideo() {
  3. uni.showLoading({
  4. mask: true,
  5. title: '上传中...'
  6. })
  7. // uploadFile 存储需要上传的文件
  8. let uploadFile = ''
  9. // 1.选择要上传的视频
  10. const res = await uni.chooseVideo({
  11. maxDuration: 60, // 拍摄视频最长拍摄时间,单位秒。最长支持 60 秒。
  12. sourceType: ['album'], // album 从相册选视频,camera 使用相机拍摄,默认为:['album', 'camera']
  13. });
  14. uploadFile = res[1].tempFilePath;
  15. // console.log(uploadFile);
  16. var that2 = this;
  17. // 2.上传所选视频到服务器
  18. const arr = await uni.uploadFile({
  19. // 需要上传的地址
  20. url: that2.vuex_uploadAction,
  21. // filePath 需要上传的文件
  22. filePath: uploadFile,
  23. name: 'file',
  24. header: {
  25. token: that2.vuex_token // 挂载请求头为用户的 token
  26. },
  27. });
  28. let data = JSON.parse(arr[1].data)
  29. console.log('data:', data);
  30. if(data.code !== 1) { // 视频上传失败了
  31. uni.hideLoading()
  32. that1.$u.toast(data.msg)
  33. return
  34. }
  35. // 上传成功(把上传成功后的文件路径 push 到页面需要显示的视频数据列表中)
  36. that2.uploadVideoUrl = data.data.fullurl
  37. that2.formData.video_url = data.data.url
  38. uni.hideLoading()
  39. }

扩展

uniapp 还整合提供了上传媒体文件(图片/视频)的 API: uni.chooseMedia 可用于上传图片和视频。若有兴趣可自行打开链接测试使用。

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

闽ICP备14008679号