<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. Java中使用fastJson

    FastJson简介 Fastjson是阿里巴巴开发的一个开源Java库,用于处理JSON数据,广泛应用于Web服务.API接口.数据交换等多个场景. FastJson的作用 主要作用是用于将Java ...

  2. Windows系统使用ODBC驱动访问KingaseES数据库及常见问题解决

    Windows系统使用KingbaseES ODBC驱动访问KingaseES数据库及常见问题解决. 一.获取KingbaseES数据库ODBC驱动: 在官网下载KingbaseES数据库安装包,选择 ...

  3. KingbaseES Json 系列四:Json数据操作函数二

    KingbaseES Json 系列四--Json数据操作函数二(JSONB_PRETTY,JSONB_STRIP_NULLS,JSON_OBJECTAGG,JSON_EQUAL,JSON_EXIST ...

  4. JWT登录认证-项目BotBattle

    目录 session 授权认证原理 密码存储与加密 jwt(JSON Web Token)验证 JWT 的无状态认证机制 实践与调试 实现目标:在没有判断登录认证的情况下,访问任意界面,直接跳转到登录 ...

  5. #线段树#洛谷 4269 [USACO18FEB]Snow Boots G

    题目传送门 分析 模型转换一下,能通过当且仅当最长的无法通过段小于 \(d\),(这点应该是此题的精华吧) 那么按照最大深度从小到大排序,双指针在线段树上删除无法通过段,求最长区间即可 代码 #inc ...

  6. #线段树合并、树上启发式合并#CF600E Lomsat gelral

    题目 一棵树有\(n\)个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和 分析1 线段树合并,记录\(w,sum\)分别表示编号和以及颜色和,当颜色和相同时两个编号 ...

  7. #网络流,分层图#洛谷 4400 [JSOI2008] Blue Mary的旅行

    题目 分析 考虑答案一定最大不超过\(n\),那么可以建分层图, 若当前最大流等于\(n\),直接输出枚举的天数 \((x,x')\)容量为\(inf\),\((x,y')\)容量为一个航班最多的票数 ...

  8. Go 语言中结构体的使用和示例

    结构体(简称struct)用于创建不同数据类型的成员集合,放入一个单一的变量中.虽然数组用于将相同数据类型的多个值存储在单一变量中,但结构体用于将不同数据类型的多个值存储在单一变量中.结构体对于将数据 ...

  9. 从零开始学Spring Boot系列-SpringApplication

    SpringApplication类提供了一种从main()方法启动Spring应用的便捷方式.在很多情况下, 你只需委托给 SpringApplication.run这个静态方法 : @Spring ...

  10. 6本值得推荐的MySQL学习书籍(有赠书福利)

    前言 在DotNetGuide技术社区交流群和微信公众号后台经常收到小伙伴们的留言,让我出一期MySQL相关学习书籍的推荐文章.因此,今天我特意为大家精选了 6 本值得推荐的 MySQL 学习书籍,希 ...