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 ...
随机推荐
- 微信小程序中rich-text文本溢出(三个...)
小程序中当rich-text中数据较多时就会出现溢出的现象 如下 此时的页面效果并不是很理想 我们可以在数据中给个div <div style="overflow: hidden;wh ...
- Notion笔记汉化
Notion笔记汉化 参考:https://github.com/Reamd7/notion-zh_CN 关注我的订阅号[靠谱杨阅读人生]回复[Notion]获取中文包 1.进入notion的安装路径 ...
- Scala 不可变集合Set
1 package chapter07 2 3 object Test06_ImmutableSet { 4 def main(args: Array[String]): Unit = { 5 // ...
- #排列组合#CF1550D Excellent Arrays
洛谷传送门 CF1550D 分析 对于excellent的 \(a\) 来说 \(|a_i-i|=x\) 的值是固定的,考虑枚举它 一半正一半负时函数值是最大的,当 \(n\) 为奇数时要分为两种情况 ...
- Python 潮流周刊第 45 期(摘要)+ 赠书 5 本《Python语言及其应用(第2版)》
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- 使用OHOS SDK构建tinyexr
参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone https://github.com/syoyo/tinyexr.git 进入源码 ...
- Docker 14 Docker Compose
概述 使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build.docker run 等命令操作容器. 然而微服务架构的应用系统一般包含若干个微服务,每个微服务 ...
- 【直播回顾】Hello HarmonyOS系列应用篇完美收官!
6月15日晚上19点,Hello HarmonyOS系列应用篇第七期直播 <分布式应用开发>,在HarmonyOS社群内成功举行.随着本系列直播最后一课的完美收官,开发者们在逐渐掌握技术知 ...
- 如何在报表中绘制 SVG 统计图
SVG 作为一种矢量图形,具有任意缩放不失真.可被高质量打印.文件较小.交互性强等优势,正逐渐成为一种主流的图片格式.润乾报表一方面可以生成 SVG 格式的统计图,另一方面也可以在 HTML5 中直接 ...
- docker 应用篇————日志、元数据、进程查看[五]
前言 简单介绍一下dokcer的日志.元数据.进程查看 正文 查看日志命令: docker logs -f -t --tail 10 32ae 我这里的一个日志就是: 这个一直输出hello word ...