<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文件上传,显示进度条的更多相关文章

  1. vue+element UI + axios封装文件上传及进度条组件

    1.前言 之前在做项目的时候,需要实现一个文件上传组件并且需要有文件上传进度条,现将之前的实现过程简单记录一下,希望可以帮助到有需要的人. 项目用的是Vue框架,UI库使用的是element UI,前 ...

  2. atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7

    atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7 1. 实现原理 1 2. 大的文件上传原理::使用applet 1 3. 新的bp 2 1. 性能提升---分割小文件上传 ...

  3. 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 ...

  4. Jquery.Uploadify实现批量上传显示进度条 取消 上传后缩略图显示 可删除

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="UpLoad.aspx.cs&q ...

  5. springMVC+ajax 文件上传 带进度条

    前端代码: <form id= "uploadForm"> <p >指定文件名: <input type="text" name= ...

  6. struts2多文件上传(带进度条)demo+说明

    利用plupload插件实现多文件上传,实现图片: 在jsp写入js代码: z<%@ page language="java" contentType="text/ ...

  7. BootStrap Progressbar 实现大文件上传的进度条

    1.首先实现大文件上传,如果是几兆或者几十兆的文件就用基本的上传方式就可以了,但是如果是大文件上传的话最好是用分片上传的方式.我这里主要是使用在客户端进行分片读取到服务器段,然后保存,到了服务器段读取 ...

  8. HTML5文件上传还有进度条

    以下是自学it网--中级班上课笔记 网址:www.zixue.it 需要在chrome,ff,IE10下运行 html页面 <!DOCTYPE html> <html lang=&q ...

  9. js 文件异步上传 显示进度条 显示上传速度 预览文件

    通常文件异步提交有几个关键 1.支持拖拽放入文件.2.限制文件格式.3.预览图片文件.4.上传进度,速度等,上传途中取消上传.5.数据与文件同时上传 现在开始笔记: 需要一个最基础的元素<inp ...

  10. Springboot 文件上传(带进度条)

    1. 相关依赖 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http ...

随机推荐

  1. 《Spring6核心源码解析》已完结,涵盖IOC容器、AOP切面、AOT预编译、SpringMVC,面试杠杠的!

    作者:冰河 博客:https://binghe.gitcode.host 文章汇总:https://binghe.gitcode.host/md/all/all.html 源码地址:https://g ...

  2. verilog之readmemb

    verilog之readmemb 1.基本作用 用于读取存储器的值的系统函数.这里首先要知道什么是存储器.在verilog中,有一些比较大的数据是需要存储的,一般需要使用存储器,语法结构类似二维数组. ...

  3. Android记账本界面实现

    <!--activity_main.xml-->1 <?xml version="1.0" encoding="utf-8"?> 2 & ...

  4. .Net Core AutoFac 使用方法讲解大全,具体详细使用知识总结

    AutoFac 具体使用知识总结 阅读前提示 AutoFac 只是众多IOC框架的其中一种, 比较主流的有Unity.autofac.spring.net.MEF.Injection.Asp.Net ...

  5. #Pollard-Rho,高精度#洛谷 3499 [POI2010]NAJ-Divine Divisor

    题目 给定\(m\)个数\(a_i\),令\(n=\prod_{i=1}^m a_i\), 问有多少个大于1的正整数\(d\)满足\(d^{\max k}|n\) 并输出\(\max k\),\(m\ ...

  6. winrt新dx截图最小实现

    转自:https://stackoverflow.co/questions/11283015 效果还是很不错的 #include <iostream> #include <Windo ...

  7. Go 语言中的 Switch 语句详解

    switch语句 使用switch语句来选择要执行的多个代码块中的一个. 在Go中的switch语句类似于C.C++.Java.JavaScript和PHP中的switch语句.不同之处在于它只执行匹 ...

  8. 华为终端云服务牵手Likee,助力其用户与变现双增长

    如今,社交媒体越来越深入人们的生活,改变了人们沟通方式的同时,也塑造着全新的人际关系和品牌形象.为了迎合用户多样化的需求和提升用户体验, 社交媒体行业的新老企业不断追逐着新技术和新功能.据调查机构Da ...

  9. Qt 排序 QSort

    一.对整形排序 // qSort 对整形排序 QList<int> list; list << 1 << 3 << 19 << 0 < ...

  10. 第十篇:异步IO、消息队列

    一.协程 二.异步IO_Gevent 三.协程异步IO操作 四.事件驱动模型 五.IO多路复用 六.异步IO理论 一.回顾 线程 vs 进程 线程:CPU最小调度单位,内存共享: 线程同时修改同一份数 ...