1.前端
<form action="" enctype="multipart/form-data" method="post">
<input type="file" name="apk"/></form>
此时向后端发送了一个请求,携带了一个file(binary)
2.后端
UploadFile uploadFile = this.getFile(); //此时接受文件,如果客户端请求为multipart request(form表单使用了enctype="multipart/form-data"),那么必须先调用getFile系列方法才能使getPara系列方法正常工作
File file = uploadFile.getFile();
///////////////从properties文件获取静态资源服务器的地址/////////////////////////
String fsUrl = PropKit.get("static.resource.server", "http://localhost/abitfs");
fsUrl = (fsUrl.endsWith("/") ? fsUrl : fsUrl +"/") + "file/upload" ; // 文件上传路径
//////////////////////////利用HttpUtil向静态资源服务器发送post请求///////////////////////////////
/**
* 发送post请求
*
* @param urlString 网址
* @param paramMap post表单数据
*/
public static String post(String urlString, Map<String, Object> paramMap) {
return post(urlString, paramMap, HttpGlobalConfig.timeout);
}
HashMap <String, Object> paramMap = MapUtil.newHashMap();
paramMap.put("file", file);
paramMap.put("ignore_water", true); //不要水印(要水印务必要将文件名设为png)
String result= HttpUtil.post(fsUrl, paramMap); //HttpKit.post(url, queryParas, data);
/////////////////////////////获取静态资源服务器给我返回的数据,需要文件ID//////////////////////////////////////////
JSONObject parseObj = JSONUtil.parseObj(result);
String file_id = parseObj.getStr("fileId"); //文件ID
String file_url = PropKit.get("static.resource.server", "http://localhost/abitfs") + "/file/download/" + file_id; //文件下载url
String upload_file_name = uploadFile.getOriginalFileName(); //获取Apk名称
/////////////////////////////////////////使用ApkParser解析apk信息//////////////////////////////////////////////////////////////////////
ApkFile apkfile = new ApkFile(file);
ApkMeta apkmeta = apkfile.getApkMeta(); //Apk 的元信息
String file_name = apkmeta.getLabel();
String version = apkmeta.getVersionName(); //Apk的版本号
String build_version = apkmeta.getVersionCode().toString(); //构建版本号
List<IconFace> allIcons = apkfile.getAllIcons(); //获取apk的所有icon
int i = 0;
for (IconFace iconFace : allIcons) { i++;
byte[] data = iconFace.getData();
String path = PropKit.use("config.properties").get("base.upload.path");//从properties中获取文件上传路径
File iconfile = FileUtil.writeBytes(data, new File(path+"/xxx"+i+".png"));//把icon文件保存成.png结尾的文件
String imgUrl = PropKit.get("static.resource.server", "http://localhost/abitfs") + "/file/upload" ; // 图片文件上传路径
HashMap<String, Object> iconparam = MapUtil.newHashMap();
iconparam.put("file", iconfile.getAbsoluteFile());//post请求携带 参数
String iconresult= HttpUtil.post(imgUrl, iconparam); //HttpKit.post(url, queryParas, data);///向静态资源服务器发送post请求,上传图片到静态资源服务器
//////////////////////使用JSONUtil解析结果字符串,得到想要的数据////////////////////////////
JSONObject iconparseObj = JSONUtil.parseObj(iconresult);
String icon_id = iconparseObj.getStr("fileId"); //获取icon文件ID