七牛文件上传

七牛文件上传

	@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);
		    }
		});
	});
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值