uni-app实现文件上传(h5方式)
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方式)的更多相关文章
- python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,
python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...
- 表单文件上传编码方式(enctype 属性)
enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码. 如下: <form action="upload.php" method="post&quo ...
- JavaWeb 文件上传 commons_fileupload方式
import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadExcept ...
- type=file文件上传H5新特性
1.语法 <input name="myFile" type="file"> 2.属性(以下三个仅HTML5支持,因此存在兼容性问题) (1)mul ...
- springMVC两种方式实现多文件上传及效率比较
springMVC实现 多文件上传的方式有两种,一种是我们经常使用的以字节流的方式进行文件上传,另外一种是使用springMVC包装好的解析器进行上传.这两种方式对于实 现多文件上传效率上却有着很大的 ...
- Java实现文件上传
最近自己在做一个小系统玩的时候涉及到了文件的上传,于是在网上找到Java上传文件的方案,最后确定使用common-fileupload实现上传操作. 需求说明 用户添加页面有一个“上传”按钮,点击按钮 ...
- java常见3种文件上传速度对比和文件上传方法详细代码
在java里面文件上传的方式很多,最简单的依然是FileInputStream.FileOutputStream了,在这里我列举3种常见的文件上传方法代码,并比较他们的上传速度(由于代码是在本地测试, ...
- servlet3.0文件上传与下载
描述:文件上传与下载是在JavaEE中常见的功能,实现文件上传与下载的方式有多种,其中文件上传的方式有: (1)commons-fileupload: (2)Servlet 3.0 实现文件上传 (3 ...
- Selenium2学习-039-WebUI自动化实战实例-文件上传下载
通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...
随机推荐
- 安卓之父造手机:该紧张的只有iPhone?
近日,"安卓之父" Andy Rubin正式带来他潜心打造的新款智能手机--Essential.这款设计新颖.配置强大的手机刚一发布,就引起全球科技界的广泛关注.对iPhone.三 ...
- epoll的原理和用法
设想一个场景,有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收到TCP包)也就是说,在每一时刻进程只需要处理这100万连接中的一小部分连接,那么,如何 ...
- percona-toolkit 之 【pt-query-digest】使用
背景 关于pt-query-digest的使用场景和方法在percona-toolkit 之 [pt-query-digest]介绍文章里已经做了详细说明,现在开始介绍下如何使用,以及常用的命令. 使 ...
- VUE实现Studio管理后台(一):鼠标拖放改变窗口大小
近期改版RXEditor,把改版过程,用到的技术点,记录下来.昨天完成了静态页面的制作,制作过程并未详细记录,后期已经不愿再补了,有些遗憾.不过工作成果完整保留在github上,地址:https:// ...
- MySql5.7.28下载、安装、登陆详解
进入MySql官网下载,页面如下 根据自己需求,选择适合自己的进行下载 然后解压安装包到自己的喜欢的路径 配置环境变量 添加环境系统变量 MYSQL_HOME:D:\Program Files\mys ...
- Lambda表达式(JDK8)
在说Lambda表达式之前,先介绍一下函数式接口 函数式接口 就是只定义了一个抽象方法的接口,我们可以使用注解@Functionallnterface,来强约束这种接口为函数式接口.如Runnable ...
- Ios/Android h5 唤起本地APP
纠结两天(浏览器中唤起本地APP),一直找不到解决方案,今天总算基本搞定. ps:吐槽一下 魔窗那篇文章,为什么就不直接把js代码开源开源,混淆后的代码看得我好恼火 参考文章:魔窗解决方案.京东解决方 ...
- 前端基础知识之HTML
[1: What does a doctype do?] 1: doctype是html文件的第一行代码,意味着它的前面有注释都不行.所以要要写在<html>标签前面,而且它不属于html ...
- 浏览器渲染流程&Composite(渲染层合并)简单总结
梳理浏览器渲染流程 首先简单了解一下浏览器请求.加载.渲染一个页面的大致过程: DNS 查询 TCP 连接 HTTP 请求即响应 服务器响应 客户端渲染 这里主要将客户端渲染展开梳理一下,从浏览器器内 ...
- python正则表达式之re模块方法介绍
python正则表达式之re模块其他方法 1:search(pattern,string,flags=0) 在一个字符串中查找匹配 2:findall(pattern,string,flags=0) ...