1.嵌入H5页面,需要采用web-view标签,如下:

<web-view src="/hybrid/html/index.html" @message="handleMessage"></web-view>

注意:

  • h5页面必须在项目目录:/hybrid/html/下面,因为这样uni-app才不会进行编译
  • @message事件是h5页面向应用发送数据的回调

    2.h5页面代码:

  • <!DOCTYPE html>
    <html lang="zh">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>上传文件</title>
    <style>
    *{
    margin: 0;
    padding: 0;
    }
    .head-btn{
    text-align: center;
    margin-top: 50px;
    }
    .file {
    position: relative;
    display: inline-block;
    background: #D0EEFF;
    border: 1px solid #99D3F5;
    border-radius: 10px;
    padding: 24px 50px;
    overflow: hidden;
    color: #1E88C7;
    text-decoration: none;
    text-indent: 0;
    line-height: 20px;
    font-size: 40px;
    }
    .file input {
    position: absolute;
    font-size: 200px;
    right: 0;
    top: 0;
    opacity: 0;

    }
    .file:hover {
    background: #AADFFD;
    border-color: #78C3F3;
    color: #004974;
    text-decoration: none;
    }
    .determine{
    color: #FFFFFF;
    background-color: #007AFF;
    display: inline-block;
    font-size: 20px;
    border-radius: 5px;
    padding: 8px 24px;
    }
    .showFileName{
    display: inline-block;
    height: 30px;
    min-width: 300px;
    }
    .btn {
    display: block;
    margin: 20px auto;
    padding: 5px;
    background-color: #007aff;
    border: 0;
    color: #ffffff;
    height: 40px;
    width: 200px;
    border-radius: 5px;
    }
    .btn1 {
    display: block;
    margin: 20px auto;
    padding: 5px;
    background-color: #007aff;
    border: 0;
    color: #ffffff;
    height: 40px;
    width: 200px;
    border-radius: 5px;
    }

    .btn-red {
    background-color: #dd524d;
    }

    .btn-yellow {
    background-color: #f0ad4e;
    }

    .desc {
    padding: 10px;
    color: #999999;
    }
    .text{
    background-color: #007AFF;
    text-align: center;
    font-size: 18px;
    color: white;
    height: 45px;
    }
    .text-in{
    padding-top: 10px;
    }
    .body{
    background-image: url(../../static/timg.jpg);
    }

    </style>
    </head>
    <body class="body">
    <div class="text">
    <div class="text-in">
    文件上传
    </div>
    </div>
    <div class="head-btn">
    <form action="" method="post">
    <a href="javascript:;" class="file">选择文件
    <input type="file" name="uploadFile" id="uploadFile" >
    </a>
    </form>
    <p class="showFileName"></p>

    </div>
    <div>
    <button class="btn" type="button" data-action="redirectTo">确定</button>
    <button class="btn1" type="button" data-action="navigateBack">取消上传</button>
    </div>

    <script src="./js/jQuery1_10_2.js"></script>
    <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script>
    <script>
    console.log("转检编号:"+getQuery('id')); //转检编号
    //取url中的参数值
    function getQuery(id) {
    // 正则:[找寻'&' + 'url参数名字' = '值' + '&']('&'可以不存在)
    let reg = new RegExp("(^|&)"+ id +"=([^&]*)(&|$)");
    let r = window.location.search.substr(1).match(reg);
    //console.log("r="+r);
    if(r != null) {
    // 对参数值进行解码
    return decodeURIComponent(r[2]);
    }
    return null;
    }

    $(".file").on("change", "input[type='file']", function() {
    let filePath = $(this).val();
    // console.log(filePath);
    localStorage.setItem("fileAddress", filePath);
    let lastname = localStorage.getItem("fileAddress");
    if (lastname != "") {
    $(".showFileName").html(lastname);
    } else {
    $(".showFileName").html("");
    }
    });
    $('.btn').click(function(evt) {
    var fileUrl;
    var formdata = new FormData(); // 创建一个form类型的数据
    formdata.append("files",$("#uploadFile")[0].files[0]); // 获取上传文件的数据
    formdata.append("operate","UpLoadFile"); // 操作码
    formdata.append("name","name");
    //console.log("files:"+formdata.get("files") + ",name:" + formdata.get("name"))
    console.log("begin")
    $.ajax({
    url: 'http://47.97.163.146:8080/Controler.ashx',
    type: "POST",
    async:false, //同步请求,否则内部嵌套的ajax不会运行
    processData: false,
    contentType: false,
    data:formdata,
    dataType:"json",
    success: function(data) {
    //更新数据库添入附件的url
    console.log("data:" + JSON.stringify(data))
    fileUrl = data.url;
    // var formdata1 = new FormData(); // 创建一个form类型的数据
    // formdata1.append("operate","UploadFileZJ"); // 操作码
    // formdata1.append("ID",getQuery('id'));
    // formdata1.append("url",fileUrl);
    console.log("url地址:"+fileUrl);
    console.log("转检编号:"+getQuery('id'));
    //console.log("url:"+formdata1.get("url") + ",ID:" + formdata1.get("ID")) //查看url和转检id
    $.ajax({
    url: 'http://47.97.163.146:8080/Controler.ashx',
    type: "POST",
    data:{operate:"UploadFileZJ",ID:getQuery('id'),url:fileUrl},
    dataType:"json",
    success: function(data){
    console.log("更新成功")
    },
    error: function(err) {
    console.log(555)
    console.log("更新失败的");
    }
    })
    console.log("这是请求成功的");
    },
    error: function(err) {

    console.log("这是请求失败的");
    }
    });
    console.log("end")

    var target = evt.target;
    if (target.tagName === 'BUTTON') {
    var action = target.getAttribute('data-action');
    if (action == 'redirectTo') {
    uni.redirectTo({
    url: '/pages/index/index',
    success:function (d) {
    console.log("跳转成功");
    },
    fail:function(e){
    console.log(e);
    },
    });
    }
    }
    });

    //取消文件上传
    $('.btn1').click(function(evt) {
    var target = evt.target;
    if (target.tagName === 'BUTTON') {
    var action = target.getAttribute('data-action');
    if (action == 'navigateBack') {
    uni.navigateBack({
    delta: 1
    });
    }
    }
    });

    </script>
    </body>
    </html>

    样式图:

uni-app实现文件上传(h5方式)的更多相关文章

  1. python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,

    python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...

  2. 表单文件上传编码方式(enctype 属性)

    enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码. 如下: <form action="upload.php" method="post&quo ...

  3. JavaWeb 文件上传 commons_fileupload方式

    import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadExcept ...

  4. type=file文件上传H5新特性

    1.语法 <input name="myFile" type="file"> 2.属性(以下三个仅HTML5支持,因此存在兼容性问题) (1)mul ...

  5. springMVC两种方式实现多文件上传及效率比较

    springMVC实现 多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传.这两种方式对于实 现多文件上传效率上却有着很大的 ...

  6. Java实现文件上传

    最近自己在做一个小系统玩的时候涉及到了文件的上传,于是在网上找到Java上传文件的方案,最后确定使用common-fileupload实现上传操作. 需求说明 用户添加页面有一个“上传”按钮,点击按钮 ...

  7. java常见3种文件上传速度对比和文件上传方法详细代码

    在java里面文件上传的方式很多,最简单的依然是FileInputStream.FileOutputStream了,在这里我列举3种常见的文件上传方法代码,并比较他们的上传速度(由于代码是在本地测试, ...

  8. servlet3.0文件上传与下载

    描述:文件上传与下载是在JavaEE中常见的功能,实现文件上传与下载的方式有多种,其中文件上传的方式有: (1)commons-fileupload: (2)Servlet 3.0 实现文件上传 (3 ...

  9. Selenium2学习-039-WebUI自动化实战实例-文件上传下载

    通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...

随机推荐

  1. JavaScript 预解析机制

    首先我们来看一段代码: <script> console.log(a); var a = 10; </script> 此时运行结果为   为什么会显示undefined呢?这就 ...

  2. Dubbo中@Service工作过程解析

    Dubbo中@Service工作过程解析 Spring中的BeanPostProcessor 首先我们应当了解到在spring体系中BeanPostProcessor是什么.加载流程 它是什么 Bea ...

  3. 在eclipse的Java类文件中,右上角出现大写字母A代表什么

    代表这个文件(类)是一个抽象类abstract的第一个字母:

  4. PxCook+photoshop实现傻瓜式切图(推荐小白使用)

    确定需求 刚入门前端的小伙伴经过一个阶段的学习,已经准备小试牛刀了.但看到设计师给出的psd图,又头疼了,天啊撸,怎么办,我不会切图啊.今天我就带领小白学习傻瓜式切图.包学包会.( ̄▽ ̄)" ...

  5. 解决 Highcharts 中 yAxis 的 max 设置无效的问题

    问题场景 $(function () { Highcharts.chart('container', { title: { text: 'line' }, xAxis: { categories: [ ...

  6. nx-admin1.2版本发布

    nx-admin 是一个开源的管理系统前端集成方案 github地址 nx-admin的初心 组件更易用, 让每个小白快速上手, 最大程度上帮助个人,企业节省时间成本和费用开支. 尽管这个过程不简单, ...

  7. 把.net Core 项目迁移到VS2019 for MAC

    VS2019 for MAC已经发布很长时间了,本以为项目移过去很麻烦,一直没有动作,最近呆家里快发霉了,决定研究研究,没想到一句代码都不需要动,直接完功,这下可以生产了.同学们可以放心整了. 本次平 ...

  8. 教你高效使用数据可视化BI软件创建医院卫生耗材运营监控大屏

    灯果数据可视化BI软件是新一代人工智能数据可视化大屏软件,内置丰富的大屏模板,可视化编辑操作,无需任何经验就可以创建属于你自己的大屏.大家可以在他们的官网下载软件.   本文以医院卫生耗材运营监控大屏 ...

  9. 硬核数据结构,让你从B树理解到B+树

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是周五分布式系统的第八篇文章,核心内容是B+树的原理. 今天的文章是上周B树的延伸,所以新关注的或者是有所遗忘的同学建议先从下方链接回顾 ...

  10. 配置XNA以适用VS2017进行开发

    Win10似乎已不再支持使用XNA进行游戏开发,安装XNA Game Studio经常会出现错误,显示不兼容,即使安装VS2010也不行.下面给出方法,可以使用VS2017配合XNA进行游戏开发. 1 ...