uni-app实现文件上传(h5方式)
<p>1.嵌入H5页面,需要采用web-view标签,如下:</p><div class="cnblogs_code">
<pre><web-view src=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">/hybrid/html/index.html</span><span style="color: rgba(128, 0, 0, 1)">"</span> @message=<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">handleMessage</span><span style="color: rgba(128, 0, 0, 1)">"</span>></web-view></pre>
</div>
<p>注意:</p>
<ul>
<li>h5页面必须在项目目录:/hybrid/html/下面,因为这样uni-app才不会进行编译</li>
<li>@message事件是h5页面向应用发送数据的回调<img id="uploading_image_33898" src="https://common.cnblogs.com/images/loading.gif" alt="">
<p> <img src="https://img2018.cnblogs.com/i-beta/1858331/202001/1858331-20200108145129250-1162658841.png" alt=""></p>
<p> </p>
<p> 2.h5页面代码:</p>
</li>
<li>
<div class="cnblogs_code">
<p><!DOCTYPE html><br><html lang="zh"><br> <head><br> <meta charset="UTF-8"><br> <meta name="viewport" content="width=device-width, initial-scale=1.0"><br> <meta http-equiv="X-UA-Compatible" content="ie=edge"><br> <title>上传文件</title><br> <style><br> *{<br> margin: 0;<br> padding: 0;<br> }<br> .head-btn{<br> text-align: center;<br> margin-top: 50px;<br> }<br> .file {<br> position: relative;<br> display: inline-block;<br> background: #D0EEFF;<br> border: 1px solid #99D3F5;<br> border-radius: 10px;<br> padding: 24px 50px;<br> overflow: hidden;<br> color: #1E88C7;<br> text-decoration: none;<br> text-indent: 0;<br> line-height: 20px;<br> font-size: 40px;<br> }<br> .file input {<br> position: absolute;<br> font-size: 200px;<br> right: 0;<br> top: 0;<br> opacity: 0;<br> <br> }<br> .file:hover {<br> background: #AADFFD;<br> border-color: #78C3F3;<br> color: #004974;<br> text-decoration: none;<br> }<br> .determine{<br> color: #FFFFFF;<br> background-color: #007AFF;<br> display: inline-block;<br> font-size: 20px;<br> border-radius: 5px;<br> padding: 8px 24px;<br> }<br> .showFileName{<br> display: inline-block;<br> height: 30px;<br> min-width: 300px;<br> }<br> .btn {<br> display: block;<br> margin: 20px auto;<br> padding: 5px;<br> background-color: #007aff;<br> border: 0;<br> color: #ffffff;<br> height: 40px;<br> width: 200px;<br> border-radius: 5px;<br> }<br> .btn1 {<br> display: block;<br> margin: 20px auto;<br> padding: 5px;<br> background-color: #007aff;<br> border: 0;<br> color: #ffffff;<br> height: 40px;<br> width: 200px;<br> border-radius: 5px;<br> }<br> <br> .btn-red {<br> background-color: #dd524d;<br> }<br> <br> .btn-yellow {<br> background-color: #f0ad4e;<br> }<br> <br> .desc {<br> padding: 10px;<br> color: #999999;<br> }<br> .text{<br> background-color: #007AFF;<br> text-align: center; <br> font-size: 18px; <br> color: white;<br> height: 45px;<br> }<br> .text-in{<br> padding-top: 10px;<br> }<br> .body{<br> background-image: url(../../static/timg.jpg);<br> }<br> <br> </style><br> </head><br> <body class="body"><br> <div class="text"><br> <div class="text-in"><br> 文件上传<br> </div><br> </div><br> <div class="head-btn"><br> <form action="" method="post"><br> <a href="javascript:;" class="file">选择文件<br> <input type="file" name="uploadFile" id="uploadFile" ><br> </a><br> </form><br> <p class="showFileName"></p><br> <br> </div><br> <div><br> <button class="btn" type="button" data-action="redirectTo">确定</button><br> <button class="btn1" type="button" data-action="navigateBack">取消上传</button><br> </div><br> <br> <script src="./js/jQuery1_10_2.js"></script><br> <script type="text/javascript" src="https://js.cdn.aliyun.dcloud.net.cn/dev/uni-app/uni.webview.1.5.2.js"></script><br> <script><br> console.log("转检编号:"+getQuery('id')); //转检编号<br> //取url中的参数值<br> function getQuery(id) {<br> // 正则:[找寻'&' + 'url参数名字' = '值' + '&']('&'可以不存在)<br> let reg = new RegExp("(^|&)"+ id +"=([^&]*)(&|$)");<br> let r = window.location.search.substr(1).match(reg);<br> //console.log("r="+r);<br> if(r != null) {<br> // 对参数值进行解码<br> return decodeURIComponent(r);<br> }<br> return null;<br> }<br> <br> $(".file").on("change", "input", function() {<br> let filePath = $(this).val();<br> // console.log(filePath);<br> localStorage.setItem("fileAddress", filePath);<br> let lastname = localStorage.getItem("fileAddress");<br> if (lastname != "") {<br> $(".showFileName").html(lastname);<br> } else {<br> $(".showFileName").html("");<br> }<br> });<br> $('.btn').click(function(evt) {<br> var fileUrl;<br> var formdata = new FormData(); // 创建一个form类型的数据<br> formdata.append("files",$("#uploadFile").files); // 获取上传文件的数据<br> formdata.append("operate","UpLoadFile"); // 操作码<br> formdata.append("name","name");<br> //console.log("files:"+formdata.get("files") + ",name:" + formdata.get("name"))<br> console.log("begin")<br> $.ajax({<br> url: 'http://47.97.163.146:8080/Controler.ashx',<br> type: "POST",<br> async:false, //同步请求,否则内部嵌套的ajax不会运行<br> processData: false,<br> contentType: false,<br> data:formdata,<br> dataType:"json",<br> success: function(data) {<br> //更新数据库添入附件的url<br> console.log("data:" + JSON.stringify(data))<br> fileUrl = data.url;<br> // var formdata1 = new FormData(); // 创建一个form类型的数据<br> // formdata1.append("operate","UploadFileZJ"); // 操作码<br> // formdata1.append("ID",getQuery('id'));<br> // formdata1.append("url",fileUrl); <br> console.log("url地址:"+fileUrl);<br> console.log("转检编号:"+getQuery('id'));<br> //console.log("url:"+formdata1.get("url") + ",ID:" + formdata1.get("ID")) //查看url和转检id<br> $.ajax({<br> url: 'http://47.97.163.146:8080/Controler.ashx',<br> type: "POST",<br> data:{operate:"UploadFileZJ",ID:getQuery('id'),url:fileUrl},<br> dataType:"json",<br> success: function(data){<br> console.log("更新成功")<br> },<br> error: function(err) {<br> console.log(555)<br> console.log("更新失败的");<br> }<br> })<br> console.log("这是请求成功的");<br> },<br> error: function(err) {<br> <br> console.log("这是请求失败的");<br> }<br> });<br> console.log("end")<br> <br> var target = evt.target;<br> if (target.tagName === 'BUTTON') {<br> var action = target.getAttribute('data-action');<br> if (action == 'redirectTo') {<br> uni.redirectTo({<br> url: '/pages/index/index',<br> success:function (d) {<br> console.log("跳转成功");<br> },<br> fail:function(e){<br> console.log(e);<br> },<br> });<br> }<br> }<br> });<br> <br> //取消文件上传<br> $('.btn1').click(function(evt) {<br> var target = evt.target;<br> if (target.tagName === 'BUTTON') {<br> var action = target.getAttribute('data-action');<br> if (action == 'navigateBack') {<br> uni.navigateBack({<br> delta: 1<br> });<br> }<br> }<br> });<br> <br> <br> </script><br> </body><br></html></p>
</div>
<p>样式图:<img src="https://img2018.cnblogs.com/i-beta/1858331/202001/1858331-20200108145337275-1946263109.png" alt=""></p>
<p> </p>
<p> </p>
</li>
</ul><br><br>
来源:https://www.cnblogs.com/lbz6/p/12166664.html
頁:
[1]