uni-app附件上传选择Vue内嵌版

Posted Promise

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uni-app附件上传选择Vue内嵌版相关的知识,希望对你有一定的参考价值。

lsj-upload

插件地址:https://ext.dcloud.net.cn/plu...

不清楚使用方式可导入示例项目运行完整示例

希望能帮到你!

使用插件有任何问题欢迎加入QQ讨论群:701468256

若能帮到你还请点亮5颗小星星以作鼓励哈~

使用说明

属性是否必填值类型默认值说明
widthString100%容器宽度
heightString80rpx容器高度
sizeNumber10附件大小上限(M)
top,left,right,bottom[Number,String]0设置控件绝对位置,仅App端position=absolute时有效,其他端若需要绝对定位可自行在外层设置css position样式
valueNumber0上传进度,通过v-model双向绑定
childIdStringlsjUpload控件的id(仅APP有效,尽量每个控件命名一个唯一Id)
positionStringstatic控件的排版位置(仅APP有效,static=控件随页面滚动;absolute=控件在页面中绝对定位,不随窗口内容滚动;nvue仅支持absolute)
@inputFunctionvalue上传进度改变时回调
@callbackFunctionObject上传成功时回调

ref调用

作用方法传入参数类型说明
创建文件管理器createObject初始化上传文件需要的必备参数,参数见下方函数说明
关闭文件管理器close-APP端手动关闭webview层,用于切换tab视图,可见示例项目

vue:

<lsj-upload 
ref="lsjUpload"


childId="upload"
:size="10"
v-model="percent"
@input="onInput"
@callback="onCallback">
    <view class="btn" style="height: 80rpx;">选择附件上传</view>
</lsj-upload>

  • 函数说明
/*  */
export default {
    data() {
        return {
            tabIndex: 0,
            percent: \'\'
        }
    },
    onReady() {
        // 初始化参数并创建上传DOM
        this.onCreate();
    },
    methods: {
        // app端切换tab示例
        onTab(tabIndex) {
            this.tabIndex = tabIndex;
            
            if (tabIndex == 0 ) {
                // 因为创建webview时需要获取按钮位置,所以需要nextTick后再重新调用create
                this.$nextTick(()=>{
                    this.onCreate();
                })
            }
            else {
                this.$refs.lsjUpload.close();
            }
            
        },
        onCreate() {
            // 初始化参数并创建上传DOM
            this.$refs.lsjUpload.create({
                // #ifdef APP-PLUS
                cuWebview: this.$mp.page.$getAppWebview(), // app必传
                // #endif
                url: \'https://www.example.com/upload\', //替换为你的接口地址
                name: \'file\', // 附件key
                debug: true,
                //根据你接口需求自定义请求头
                header: {
                    \'Authorization\': \'token\'
                },
                //根据你接口需求自定义body参数
                formData: {
                    \'orderId\': 1000
                }
            });
        },
        onInput(e) {
            console.log(\'上传进度\',e);
        },
        onCallback(e) {
            console.log(\'上传结果\',e);
        }
    }
}

温馨提示

  • 文件上传
  • 如说明表达还不够清楚,怎么调用可导入完整示例项目运行体验和查看
  • APP端请优先联调android,上传成功后再运行ios端,如iOS返回status=0则需要后端开启允许跨域;
  • header的Content-Type类型需要与服务端要求一致,否则收不到附件(服务端若没有明文规定则可不写,使用默认匹配)
  • 服务端不清楚怎么配置跨域可加群咨询,具体百度~
  • 欢迎加入QQ讨论群:701468256
  • 欢迎加入QQ讨论群:701468256
  • 欢迎加入QQ讨论群:701468256
  • 若能帮到你还请点亮5颗小星星以作鼓励哈~
  • 若能帮到你还请点亮5颗小星星以作鼓励哈~
  • 若能帮到你还请点亮5颗小星星以作鼓励哈~

以上是关于uni-app附件上传选择Vue内嵌版的主要内容,如果未能解决你的问题,请参考以下文章

uni-app怎么字符串输出多张图片

使用微搭低代码实现附件上传

使用微搭低代码实现附件上传

vue上传多个文件,附件和其他数据一起传给后台

uni-app 与 web-view内嵌网页 双向通信

一个后台管理平台,用vue+elementUI写的,有个附件上传之后,下载不下来