当前位置: 首页 > article >正文

uniapp上传文件问题以及返回上一页出现退出app的问题记录

uniapp上传文件使用uni.uploadFile,如果直接一次性在success里完成会导致页面自动刷新,特别是添加了本页面有onshow()方法,上传完会自动调用onshow()方法。

建议使用官方的方式分成两个方法处理:

async afterRead(event) {

    let fileListLen =this.fileList.length;

    for (let i = 0; i < event.file.length; i++) {
      that.uploadPromise(event.file[i]).then(result=>{
          let item = this.fileList[fileListLen]//当前文件
          item.status ="success"
          item.message =""
          item.url =result
          fileListLen++
      })

    }

},

async uploadPromise(myfile: { url: any; name: any; type: any; }) {
      let accessToken = uni.getStorageSync('access-token')
                return new Promise((resolve, reject) => {
                    console.log(myfile.type)
                    uni.uploadFile({//后台读取不到文件名
                      url: env.baseUrl+'api/Problem/uploadAttachs',
                      //file:myfile,//浏览器环境只能用单文件方式上传
                      filePath:myfile.url,//app环境能用多文件或本地文件路径方式上传
                      name:'file',
                      header:{
                          'ignoreCancelToken': true,
                          'Authorization':`Bearer ${accessToken}`
                      },
                      formData:{
                          file: myfile,
                          fileName: myfile.name,
                          fileType: myfile.type
                      },
                      timeout:180000,
                      success: (res) => {
                          console.log('上传结果'+res.data)
                        let resdata = JSON.parse(res.data);
                        setTimeout(() => {
                          let fileurl = resdata.result?resdata.result.url:'';
                          resolve(fileurl);
                        }, 1000);
                      },
                      fail: (error) => {
                        reject(error);
                      }
                    });
                });
            }

后端返回的文件相对路径,再保存方法中处理一起提交。但莫名奇妙的出现提交完成后直接退出的情况,一搜索啥都找不到。ai提示使用事件阻止event.preventDefault();但这里似乎不合适。

真机测试发现就是uni.showToast方法的问题。

updateProblem(reqdata).then(res => {
						if (res.code == 200) {
							uni.navigateBack({
								delta: 1 // 返回上一级页面
							});
							//与返回上一页一起使用弹窗会导致直接退出app
							// uni.showToast({
							// 	title: '编辑成功',
							// 	icon: 'success',
							// 	duration: 2000
							// });
						}
						else{
							uni.showToast({
								title: '编辑失败',
								icon: 'warning',
								duration: 2000
							});
						}
					}).catch(()=>{
						uni.showToast({
							title: '编辑保存异常,请稍后再试!',
							icon: 'warning',
							duration: 2000
						});
					})

真的很奇怪,提交完成后返回上一页就不能提示了。


http://www.kler.cn/a/584885.html

相关文章:

  • Flutter_学习记录_video_player、chewie 播放视频
  • 80.Dictionary 字典 C#例子
  • 数据库学习笔记
  • CSS3 用户界面设计指南
  • Go执行当前package下的所有方法
  • 微信小程序校园跑腿的设计与实现【lw+源码+部署+视频+讲解】
  • SpringBoot使用Logback日志框架与综合实例
  • 在 WSL中批量执行InSAR任务-stackSentinel.py
  • 【web前端开发】HTML排版标签、HTML语义化标签、常用的文本标签
  • 嵌入式裸机设计--MCU常用裸机架构有哪些?
  • 面试之《实现Event Bus》
  • Qt 驾校考试系统项目实现
  • OSPF-2 邻接建立关系
  • 软件工程概述、软件过程模型、逆向工程(高软45)
  • 2025探索短剧行业新可能报告40+份汇总解读|附PDF下载
  • 【WPF】Slider滑动方法(INotifyPropertyChanged、ValueChanged )响应速度对比分析
  • java-正则表达式
  • 【从零开始学习计算机科学】数据库系统(四)数据库的物理设计
  • Golang |* 和
  • 车载以太网测试-9【网络层】-子网划分的子网掩码VLAN