您的位置:首页 > 其它

百度上传组件:webuploader

2016-07-15 17:42 281 查看
百度图片上传组件:

页面:

<div class="upload">
<section>
<article>
<div class="wu-example">
<div id="fileList" class="uploader-list"></div>
      <span id="picker">上传出生证明</span>
</div>
       <div id="thumb"></div>
</article>
<div class="load" id="loading1" style="display: none"></div>
</section>

</div>

JS

坑1:路径

[b]坑2:IOS和安卓不同,导致调用方式改变
[/b]

$(document).ready(function(){
var serverUrl ;//默认值

var environment = "ceshi";//xiangshang,ceshi ,bendi
var baseurl = '<%=basepath%>';
// 	 	alert(baseurl);
var u = navigator.userAgent;
if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {//安卓手机
//			alert("安卓手机");
if(environment=="xiangshang"){
serverUrl = "/hd/6/updateHeadImgNew";//线上环境(hd是线上做了nginx路径映射)
}else if(environment=="ceshi"){
serverUrl = "/6/updateHeadImgNew";//测试环境
}else if(environment=="bendi"){
serverUrl = baseurl+"/6/updateHeadImgNew";//本地环境
}
} else if (u.indexOf('iPhone') > -1) {//苹果手机
// 			alert("苹果手机");
if(environment=="xiangshang"){
serverUrl = "/hd/6/updateHeadImg";//线上环境(hd是线上做了nginx路径映射)
}else if(environment=="ceshi"){
serverUrl = "/6/updateHeadImg";//测试环境
}else if(environment=="bendi"){
serverUrl = baseurl+"/6/updateHeadImg";//本地环境
}
} else if (u.indexOf('Windows Phone') > -1) {//winphone手机
//			alert("winphone手机");
if(environment=="xiangshang"){
serverUrl = "/hd/6/updateHeadImg";//线上环境(hd是线上做了nginx路径映射)
}else if(environment=="ceshi"){
serverUrl = "/6/updateHeadImg";//测试环境
}else if(environment=="bendi"){
serverUrl = baseurl+"/6/updateHeadImg";//本地环境
}
}else{
// 			alert("其他");
if(environment=="xiangshang"){
serverUrl = "/hd/6/updateHeadImg";//线上环境(hd是线上做了nginx路径映射)
}else if(environment=="ceshi"){
serverUrl = "/6/updateHeadImg";//测试环境
}else if(environment=="bendi"){
serverUrl = baseurl+"/6/updateHeadImg";//本地环境
}
}

// 		alert(serverUrl);

var uploader = WebUploader.create({
// swf文件路径
swf: 'webuploader/Uploader.swf',
auto: true,
// 文件接收服务端。
server: serverUrl,//本地测试地址

// 	    server: '/hd/6/updateHeadImgNew',//线上地址

fileVal :'image',

//缩略图
thumb:{
width: 100,
height: 100,

// 图片质量,只有type为`image/jpeg`的时候才有效。
quality: 70,

// 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false.
allowMagnify: false,

// 是否允许裁剪。
crop: true,

// 为空的话则保留原有图片格式。
// 否则强制转换成指定的类型。
type: 'image/jpeg'
},

compress:{
width: 1000,
height: 1000,

// 图片质量,只有type为`image/jpeg`的时候才有效。
quality: 90,

// 是否允许放大,如果想要生成小图的时候不失真,此选项应该设置为false.
allowMagnify: false,

// 是否允许裁剪。
crop: false,

// 是否保留头部meta信息。
preserveHeaders: true,

// 如果发现压缩后文件大小比原来还大,则使用原来图片
// 此属性可能会影响图片自动纠正功能
noCompressIfLarger: false,

// 单位字节,如果图片大小小于此值,不会采用压缩。
compressSize: 0
},

// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: '#picker',

// 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传!
resize: true,

//目前移动端有几个重要的 bug 在此列出来以免大家踩坑。

/*
上传请求内容为空,这是 android 4 的一个bug,只要 file 的 blob数据修改过,通过 xhr2 去发送就有这个问题。 详情:https://code.google.com/p/android/issues/detail?id=39882

解决方案: 发送的时候采用二进制方案,即 把 sendAsBinary 设置成true, 通过这种方式可以避免这个问题。后端接受需要小改动一下。
*/

sendAsBinary:true,

fileNumLimit:1,
// 只允许选择图片文件。
accept: {
title: 'Images',
extensions: 'gif,jpg,jpeg,bmp,png',
mimeTypes: 'image/*'
}

});
uploader.on( 'fileQueued', function( file ) {
uploader.makeThumb( file, function( error, ret ) {
if ( error ) {
$li.text('预览错误');
} else {
$("#picker").first("div").html("");
$("#thumb").html('<img alt="" src="' + ret + '" />');
$("#loading1").show();
}
});
});
uploader.on( 'uploadSuccess', function( file,result ) {
$( '#'+file.id ).addClass('upload-state-done');
var	 qiuniuurl1 = result.data.usIco;
$("#pichidden_1").val(qiuniuurl1);
$("#loading1").hide();

});
});

服务器程序:

IOS调用

@RequestMapping("/updateHeadImg")
@ResponseBody
public ApiResult updateHeadImg(String name) {
ApiResult apiResult = new ApiResult();

byte[] imageByte = null;

try {
InputStream inputStream = getRequest().getInputStream();
imageByte = org.apache.commons.io.IOUtils.toByteArray(inputStream);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 上传文件
if (imageByte.length>0) {

String filename = UUIDUtil.getUUID() + name;

String key ="";
if (upurl != null) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("YYYYMMdd");
String dateUrl = sdf.format(date);
key = upurl + dateUrl + "/" + filename;
}
//				byte[]  imageByte = this.cropBytes(image.getInputStream(), 420);
System.out.println("key------------------------"+key);
boolean flag = QiniuUtil.IVYBABY.uploadFile(key, imageByte);
System.out.println("flag:----------------"+flag);

System.out.println("上传七牛:" + flag);
apiResult.getData().put("usIco",BASE_QN_URL+key+"?imageView2/1/w/420");
} else {

apiResult.setMsg("图片不能为空");
}
System.out.println(JSON.toJSONString(apiResult));

return apiResult;
}


安卓调用:

@RequestMapping("/updateHeadImgNew")
@ResponseBody
public ApiResult updateHeadImgNew() {
ApiResult apiResult = new ApiResult();
String imgUrl = "";
InputStream inputStream = null;
String bendiPic = "";
try {
inputStream = getRequest().getInputStream();
//当前日期
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("YYYYMMdd");
String dateUrl = sdf.format(date);
String path="/static/imgtest/"+dateUrl;//线上路径

//			String path="D://imgtest/"+dateUrl;//测试

//创建文件夹
File f = new File(path);
if(!f.exists())
f.mkdirs();
//上传图片到本地
bendiPic = path+"/"+UUIDUtil.getUUID()+".png";//线上地址
System.out.println("bendiPic:"+bendiPic);
//裁切,并保存本地
ImageUtil.crop(inputStream, 420, bendiPic);
System.out.println("-----------本地保存路径:-----------"+bendiPic);

//准备key
String filename = UUIDUtil.getUUID() + ".png";
String key = upurl + dateUrl + "/" + filename;

//上传七牛
boolean flag = QiniuUtil.IVYBABY.uploadFile(key, bendiPic);
//如果上传七牛失败,则返回本地路径
if(flag){
imgUrl = BASE_QN_URL+key+"?imageView2/1/w/420";
}else{
//这里做的文件映射,用域名映射上面的真是路径/static/imgtest/xxxxx.png
imgUrl = "static.ivybaby.me/imgtest/"+bendiPic;
}
apiResult.getData().put("usIco",imgUrl);
} catch (Exception e) {
// TODO Auto-generated catch block
apiResult.setMsg("图片不能为空");
e.printStackTrace();
}

System.out.println("--------------imageUrl--------------【"+imgUrl+"】");
return apiResult;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: