vue通过input选取apk文件上传,显示进度条
<template>
<div class="">
<form action="" method="post" class="upload" ref="upload">
<button class="sign" id="uploadFile">选择文件</button>
<input
type="file"
accept=".ipa,.apk"
name="upload"
id="file"
@change="fileSelect($event)"/>
</form>
<button type="button" class="btn" id="upfile" @click="submit" v-if="!isSave">
</div>
</template>
<script>
export default {
name: "",
components:{
},
data(){
return{
percent:0
}
},
created:function(){},
methods:{
//选择文件
fileSelect(e) {
this.files = e.target.files[0];
if(this.files){
this.getMsg();
}
},
//解析安装包
getMsg() {
const parser = new AppInfoParser(this.files).parse().then(result => {
let fileName = this.files.name;
let suffix = fileName.substring(fileName.lastIndexOf(".") + 1,fileName.length);
if (result) {
this.icon = result.icon;
if (suffix == 'ipa') {
if (result.CFBundleDisplayName == undefined) {
this.appname = result.CFBundleName;
} else {
this.appname = result.CFBundleDisplayName;
}
this.apppackage = result.CFBundleIdentifier;
this.appTeamName = result.mobileProvision.TeamName;
this.appversion = result.CFBundleShortVersionString var str = result.mobileProvision.ProvisionsAllDevices;
var test_v = result.mobileProvision.ProvisionedDevices;
if (str) {
this.apptype = "企业版";
} else {
if (result.mobileProvision.DeveloperCertificates.length >= 0) {
this.apptype = '测试版本';
} else {
this.apptype = "未签名应用" ;
}
}
this.isShow = true;
return;
}
if (suffix == 'apk') {
this.appname = result.application.label[0];
this.apppackage = result.package;
this.appversion = result.versionCode;
}
this.isShow = true;
}
})
},
// 上传apk文件
submit(){
let that = this
// 获取表单对象上传apk文件
var fm = this.$refs.upload;
// 实例化FormData对象
var fd = new FormData();
//添加上传的文件以及token参数
fd.append('token',this.token)
fd.append('file',document.querySelector('input[type=file]').files[0])
// 创建XMLHttpRequest对象
var xhr = new XMLHttpRequest();
// 调用open方法准备ajax请求
xhr.open('post','http://xx.xxxx.cn/api/user/upload/xxx');
var jdt = this.$refs.progressbar;
// 绑定onprogress事件可获取上传的进度
xhr.upload.onprogress = function(evt){
let percent = (evt.loaded / evt.total).toFixed(2);
that.percent = parseInt(percent*100)
console.log(that.percent)
}
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
let data = JSON.parse(xhr.responseText) //转化为对象便于操作
console.log(data)
}
}
// 发送ajax请求
xhr.send(fd);
},
},
mounted:function(){}
}
</script>
<style scoped> </style>
vue通过input选取apk文件上传,显示进度条的更多相关文章
- vue+element UI + axios封装文件上传及进度条组件
1.前言 之前在做项目的时候,需要实现一个文件上传组件并且需要有文件上传进度条,现将之前的实现过程简单记录一下,希望可以帮助到有需要的人. 项目用的是Vue框架,UI库使用的是element UI,前 ...
- atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7
atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7 1. 实现原理 1 2. 大的文件上传原理::使用applet 1 3. 新的bp 2 1. 性能提升---分割小文件上传 ...
- atitit. 文件上传带进度条 atiUP 设计 java c# php
atitit. 文件上传带进度条 atiUP 设计 java c# php 1. 设计要求 1 2. 原理and 架构 1 3. ui 2 4. spring mvc 2 5. springMVC.x ...
- Jquery.Uploadify实现批量上传显示进度条 取消 上传后缩略图显示 可删除
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="UpLoad.aspx.cs&q ...
- springMVC+ajax 文件上传 带进度条
前端代码: <form id= "uploadForm"> <p >指定文件名: <input type="text" name= ...
- struts2多文件上传(带进度条)demo+说明
利用plupload插件实现多文件上传,实现图片: 在jsp写入js代码: z<%@ page language="java" contentType="text/ ...
- BootStrap Progressbar 实现大文件上传的进度条
1.首先实现大文件上传,如果是几兆或者几十兆的文件就用基本的上传方式就可以了,但是如果是大文件上传的话最好是用分片上传的方式.我这里主要是使用在客户端进行分片读取到服务器段,然后保存,到了服务器段读取 ...
- HTML5文件上传还有进度条
以下是自学it网--中级班上课笔记 网址:www.zixue.it 需要在chrome,ff,IE10下运行 html页面 <!DOCTYPE html> <html lang=&q ...
- js 文件异步上传 显示进度条 显示上传速度 预览文件
通常文件异步提交有几个关键 1.支持拖拽放入文件.2.限制文件格式.3.预览图片文件.4.上传进度,速度等,上传途中取消上传.5.数据与文件同时上传 现在开始笔记: 需要一个最基础的元素<inp ...
- Springboot 文件上传(带进度条)
1. 相关依赖 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http ...
随机推荐
- Nancy支持跨域请求
public class NancyBootstrapper : DefaultNancyBootstrapper { /// <summary> /// nancy配置 /// < ...
- WebRTC开源框架
1.什么是WebRTC WebRTC (Web Real-Time Communications)是一项实时通讯的技术,旨在使得浏览器能为实时通信提供简单的JavaScript接口,让浏览器通过JS实 ...
- DARTS:基于梯度下降的经典网络搜索方法,开启端到端的网络搜索 | ICLR 2019
DARTS是很经典的NAS方法,它的出现打破了以往的离散的网络搜索模式,能够进行end-to-end的网络搜索.由于DARTS是基于梯度进行网络更新的,所以更新的方向比较准确,搜索时间相当于之前的方法 ...
- .Net Core AutoFac 使用方法讲解大全,具体详细使用知识总结
AutoFac 具体使用知识总结 阅读前提示 AutoFac 只是众多IOC框架的其中一种, 比较主流的有Unity.autofac.spring.net.MEF.Injection.Asp.Net ...
- 11 CSS盒子模型(重点)
11 CSS盒子模型(重点) 盒模型是CSS的核心知识点之一,它指定元素如何显示以及如何相互交互.HTML页面上的每个元素都可以看成一个个方盒子,这些盒子由元素的content(内容).padding ...
- USACO 4.1
目录 洛谷 2737 麦香牛块 分析 代码 洛谷 2738 篱笆回路 分析 代码 麦香牛块洛谷传送门,麦香牛块USACO传送门,篱笆回路洛谷传送门,篱笆回路USACO传送门 洛谷 2737 麦香牛块 ...
- 使用OHOS SDK构建vorbis
参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone --depth=1 https://github.com/xiph/vorbis ...
- 本周四晚19:00知识赋能第七期第2课丨OpenHarmony WiFi扫描仪UX设计
8月18日19:00~20:00,第七期知识赋能第二节直播就要开始啦!如果你是缺乏实战经验的学生,如果你是初出茅庐的职场新人,如果你是想参与开源的贡献者,那么本期的直播课将不容错过!通过本期直播,开发 ...
- C# 循环与条件语句详解
C# Switch 语句 使用 switch 语句选择要执行的多个代码块中的一个. 示例: switch(expression) { case x: // 代码块 break; case y: // ...
- Java基础知识:面试官必问的问题
数据类型 基本类型 byte/8 char/16 short/16 int/32 float/32 long/64 double/64 boolean/~ boolean 只有两个值:true.fal ...