七牛文件上传
@RequestMapping(value = { "/apps/save" }, method = { RequestMethod.POST })
@ResponseBody
public String save(@RequestParam(value = "file", required = false) MultipartFile file,//CommonsMultipartFile
@RequestParam(value = "appStore") String appStore, @RequestParam(value = "innerCode") String innerCode,
AppVersion version, HttpServletRequest request, HttpServletResponse response, HttpSession session)
throws IOException {
//获取七牛各个密匙的值
String zone = mapperService.get(Dict.class, "qiniu_zone").getKeyvalue();
String bucket = "myapk";//设置要上传的空间名
String accessKey = mapperService.get(Dict.class, "qiniu_key").getKeyvalue();
String secretKey = mapperService.get(Dict.class, "qiniu_secret").getKeyvalue();
//构造一个带指定Zone对象的配置类
Zone z = Zone.zone0();
if ("zone0".equals(zone)) { // 华东
z = Zone.zone0();
} else if ("zone1".equals(zone)) { // 华北
z = Zone.zone1();
} else if ("zone2".equals(zone)) { // 华南
z = Zone.zone2();
} else {
z = Zone.autoZone();
}
//获得uptoken
Configuration cfg = new Configuration(z);
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);//
//
// 控制版本
String ipAddr = Util.getIpAddress(request);
Map<String, Object> p = new HashMap<String, Object>();
p.put("inner_code", innerCode);
p.put("app_store", appStore);
AppVersion v = mapperService.get(AppVersion.class, p);
//如果数据库的渠道和版本都为空
if (v == null || "43.255.230.141".equals(ipAddr)) { // 屏蔽官网检测ip
if(file==null) {
return "文件未选中";
}
// 生成软件名
String key = "xy-" + appStore + "-" + innerCode + ".apk";
// ...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
// 上传apk///数据流上传/
try {
// 调用put方法上传
Response res = uploadManager.put(file.getInputStream(), key, upToken, null, null);
// 打印返回的信息
System.out.println(res.bodyString());
// 解析上传成功的结果
// DefaultPutRet putRet = new Gson().fromJson(response.bodyString(),
// DefaultPutRet.class);
// System.out.println(putRet.key);
// System.out.println(putRet.hash);
} catch (QiniuException e) {
Response r = e.response;
// 请求失败时打印的异常的信息
System.out.println(r.toString());
try {
// 响应的文本信息
System.out.println(r.bodyString());
} catch (QiniuException e1) {
// ignore
}
}
// String bucket = "myapk"; 对应的空间名
// 其实固定地址都设好了 http://p5vcsyy4d.bkt.clouddn.com/ 那么后面加上key的值就可以
version.setHref("http://p5vcsyy4d.bkt.clouddn.com/" + key);
mapperService.insert(version);
} else {
Map<String, Object> params1 = new HashMap<String, Object>();
params1.put("app_store", appStore);
params1.put("inner_code", innerCode);
AppVersion _version = mapperService.get(AppVersion.class, params1);//根据渠道和内置版本获取
Date now = new Date();
version.setModifyTime(now);//插入更新时间
version.setCreateTime(_version.getCreateTime());//不知道为啥更新后时间为空,重新插入时间
mapperService.update(version);
}
return "已保存" ;
}
下面是前台的JS,对js不是很熟所以很长,这里感觉可以减少一半的。
$(document).ready(function(){
$("#save_btn").click(function(){
if(!$("#appId").val()) {
alert("请填入应用名称!");
return false;
}
if(!$("#content").val()) {
alert("请填入更新内容!");
return false;
}
if(!$("#subtitle").val()) {
alert("请填入应用描述!");
return false;
}
if(!$("#version").val()) {
alert("请填入外网版本!");
return false;
}
if(!$("#innerCode").val()) {
alert("请填入内置版本!");
return false;
}
if(!$("#title").val()) {
alert("请填入标题!");
return false;
}
if (!$("#file")[0].files[0]&& !$("#href").val()) {
alert('请上传文件或填写文件下载地址!');
}
var formData = new FormData();
var appId = $('#appId').val();
var appStore = $('#appStore').val();
var title = $('#title').val();
var subtitle = $('#subtitle').val();
var content = $('#content').val();
var version = $('#version').val();
var innerCode = $('#innerCode').val();
var appMode = $('#appMode').val();
var tipUser = $('#tipUser').val();
var forceUpdate = $('#forceUpdate').val();
var sameVersionUpdate = $('#sameVersionUpdate').val();
var href = $('#href').val();
formData.append('file', $("#file")[0].files[0]);
formData.append("appId",appId);
formData.append("appStore", appStore);
formData.append("title", title);
formData.append("subtitle", subtitle);
formData.append("content", content);
formData.append("version", version);
formData.append("innerCode", innerCode);
formData.append("appMode", appMode);
formData.append("tipUser", tipUser);
formData.append("forceUpdate", forceUpdate);
formData.append("sameVersionUpdate", sameVersionUpdate);
formData.append("href", href);
$.ajax({
type: "post",
url: "/apps/save",
type: 'POST',
data: formData,
async: false,
cache: false,
contentType: false, //不设置内容类型
processData: false, //不处理数据
success: function(res) {
alert(res);
}
});
});
});