springboot (apk)文件上传解析 文件名称,包名,版本号,版本名称
撸过的代码,遇到的问题记下
环境依赖
引入解析Apk的依赖
<dependency>
<groupId>net.dongliu</groupId>
<artifactId>apk-parser</artifactId>
<version>2.6.10</version>
</dependency>
解析Apk工具类
import net.dongliu.apk.parser.ApkFile;
import net.dongliu.apk.parser.bean.ApkMeta;
import net.dongliu.apk.parser.bean.UseFeature;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class ApkInfoUtil {
public static Map<String, Object> readAPK(File apkUrl) {
Map<String, Object> resMap = new HashMap<String, Object>();
try (ApkFile apkFile = new ApkFile(apkUrl)) {
ApkMeta apkMeta = apkFile.getApkMeta();
resMap.put("filename", apkMeta.getName());
resMap.put("pkgname", apkMeta.getPackageName());
resMap.put("versioncode", apkMeta.getVersionCode());
resMap.put("versionname", apkMeta.getVersionName());
for (UseFeature feature : apkMeta.getUsesFeatures()) {
System.out.println(feature.getName());
}
} catch (IOException e) {
e.printStackTrace();
}
return resMap;
}
}
效果图: 自己去网上下一个QQApk的安装包文件 进行测试
踩过的坑:因为本人使用的是:MultipartFile 格式 去接受上传文件的,
@ResponseBody
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public UploadFile upload(@RequestPart("file") MultipartFile file, @RequestParam("filePath") String filePath) {
}
其中因为上传的文件过大 需要去配置 大小。application.yml中配置
spring:
application:
name: uploadFile-Service
servlet:
multipart:
enabled: true
file-size-threshold: 0
max-file-size: 20MB
max-request-size: 100MB