JQuery上传插件Uploadify + Jcrop图像裁剪的几个常用小技巧

一、限制上传大小、图片尺寸

    $(‘#select‘).uploadify({
        ‘swf‘: ‘/plugin/uploadify/uploadify.swf‘,
        ‘uploader‘: ‘/work/imageUploadServlet.up‘,
        ‘formData‘: {
            ‘operateType‘: ‘activity.product‘
        },
        ‘method‘: ‘get‘,
        ‘cancelImg‘: ‘/plugin/uploadify/cancel.png‘,
        ‘auto‘: true,
        ‘multi‘: false,
        ‘fileTypeDesc‘: ‘请选择gif jpeg jpg文件‘,
        ‘fileTypeExts‘: ‘*.gif;*.jpeg;*.jpg;*.png‘,
        ‘sizeLimit‘: 1000 * 1024,
        ‘height‘: 19,
        ‘width‘: 60,
        ‘buttonImage‘: ‘/images/senior.png‘,
        ‘buttonText‘: ‘上传图片‘,
        ‘onSelect‘: function(file) {
           if (file.size > 5120 * 1024) { //限制上传文件大小为5M以内
               alert("上传大小不能超过 5M 哦~");
               $(‘#select‘).uploadify(‘cancel‘);
           }
        },
        ‘onUploadSuccess‘ : function(file, data, response) {
            var o = new Image();
        	o.src = data;
        	o.onload = function() {
        		var w = o.width;
        		var h = o.height;
				if( w >= 130 && h >= 130) {
				    api.destroy();
		            $("#img").removeAttr("style");
		            $("#img").attr("src", data);
		            $("#preview").attr("src", data);
		        }else{
		             alert("图片尺寸需大于130*130");
		             $(‘#select‘).uploadify(‘cancel‘);
		        }
           } 
		},
		‘onError‘ : function (event, queueID, fileObj) {
			alert("error!"+event);
			$(‘#uploadifyIndex‘).uploadify(‘cancel‘);
		}
    });

二、裁剪最小宽高限制,裁剪选框形状和尺寸限制。

function jcropload(){
		var minwidth = 130 * t; //最小宽:130px;
		var minheight = 130 * t; //最小高:130px;
		$("#img").Jcrop({
		boxWidth: width,
		boxHight: height,
		bgColor: ‘black‘,
		bgOpacity: 0.5,
		addClass: ‘jcrop-light‘,
		onChange: showCoords,
		onSelect: showCoords,
		onRelease: clearCoords,
		boundary: 5,
		aspectRatio: 1,  //裁剪比例:1为正方形、3/5为长方形等等
		minSize: [minwidth, minheight]         // 控制裁剪选框的最小裁剪尺寸
	    },
	    function() {
		var bounds = this.getBounds();
		boundx = bounds[0];
		boundy = bounds[1];
		api = this;
		// 调整裁剪选框的显示尺寸
		api.setSelect([width / 2 - 60, height / 2 - 60, width / 2 + 60, height / 2 + 60]);
		api.setOptions({
		    bgFade: true
		});
		api.ui.selection.addClass(‘jcrop-selection‘);
	    });
	}

//裁剪效果图显示
function showCoords(c) {
    if (parseInt(c.w) > 0) {
        var rx = 100 / c.w;  //根据裁剪选框宽高比例,在此调整效果图显示比例。下同
        var ry = 100 / c.h;
        $("#preview").css({
            width: Math.round(rx * boundx) + "px",
            height: Math.round(ry * boundy) + "px",
            marginLeft: "-" + Math.round(rx * c.x) + "px",
            marginTop: "-" + Math.round(ry * c.y) + "px"
        });
    };
    $(‘#x1‘).val(Math.round(c.x));
    $(‘#y1‘).val(Math.round(c.y));
    $(‘#x2‘).val(Math.round(c.x2));
    $(‘#y2‘).val(Math.round(c.y2));
    $(‘#w‘).val(Math.round(c.w));
    $(‘#h‘).val(Math.round(c.h));
};

三、上传按钮样式(swfupload)重写,让点击事件触发区域与上传按钮重合。

<style type="text/css">
	  /*弹出层上传按钮样式*/
	  .swfupload{position:absolute;left:80px;top:16px};
</style>

四、裁剪上传完成后页面清除原图,显示默认底图,且默认底图不可裁剪。

//图片裁剪上传
function jcrop() {
	var img = $("#img").attr("src");
	if(img!="/images/no_logo_pic.jpg"&&img!=""){
	    $.ajax({
	        type: "post",
	        url: "/work/jcrop.up",
	        dataType: "text",
	        data: {
	            "x": Math.ceil($(‘#x1‘).val()/t),
	            "y": Math.ceil($(‘#y1‘).val()/t),
	            "w": Math.ceil($(‘#w‘).val() / t),
	            "h": Math.ceil($(‘#h‘).val() / t),
	            "srcPath": $("#img").attr("src"),
	            "tarPath": "activity.product"
	        },
	        success: function(data, textStatus) {
	        	$("#yt_img").attr("src",data);
	        	$("#activityImg").val(data);
	        	$("#images").append("<li><img src=‘"+data+"‘ /></li>");
	        	api.destroy();
			$(".prodact_sc").hide();
			$(".back_a").hide();
			//图片裁剪并上传完毕之后清除
			$("#img").attr("src", "");
		        $("#preview").attr("src", "");
	        }
	    });
    }else{
		alert("请上传Logo");
	}
}

<img id="img" src="/images/no_logo_pic.jpg"  onerror=""http://blog.51cto.com/viewpic.php?refimg=" + this.src=‘/images/no_logo_pic.jpg‘" />
<img src="/images/no_logo_pic.jpg" id="preview"onerror=""http://blog.51cto.com/viewpic.php?refimg=" + this.src=‘/images/no_logo_pic.jpg‘" />
时间: 2024-08-28 16:35:50

JQuery上传插件Uploadify + Jcrop图像裁剪的几个常用小技巧的相关文章

jQuery上传插件Uploadify使用详解(转发原作者冯威)

jQuery上传插件Uploadify使用详解 本文Uploadify版本为2.1.0,已经过时,截止(2016-09-25)最新版本3.2.1的详细介绍请移步<jQuery上传插件Uploadify使用详解(3.2.1)> Uploadify是jQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中的使用,您也可以点击下面的链接进行演示或下载. 官方下载 官方文档 官方演示 首先按下面的步骤来实现一个简单的

jquery上传插件uploadify 报错http error 302 解决方法之一

前段时间用到jquery上传插件uploadify时,始终出现系统报出 http error 302 的错误. 网上大量搜集信息,基本上都是说session值丢失的问题,根据网友提供的解决方案进行修改,问题并没有解决. 因此,不排除这是解决302错误的解决方法之一,但是我接下来提出另一解决方案,考虑到异步传输的问题,供大家参考(反正我是成功了). 首先是uploadify初始化: $(function() {           $('#projectfile').uploadify({    

JQuery上传插件Uploadify使用详解及错误处理

转自:http://www.jb51.net/article/43498.htm 关于JQuery上传插件Uploadify使用详解网上一大把,基本上内容都一样.我根据网上的步骤配置完成后,会报一些错误,而我根据这些错误去网上找解决方案,却没有相关资料,所以为了不让更多的朋友走弯路,我把我遇到的一些问题进行汇总,也方便我自己以后查阅. 什么是Uploadify Uploadify是JQuery的一个上传插件,支持多文件上传,实现的效果非常不错,带进度显示. 官网提供的是PHP的DEMO,在这里我

jQuery上传插件Uploadify使用详解(3.2.1)(转载)

jQuery上传插件Uploadify使用详解(3.2.1) Sep 25, 2016 | JQuery | 10733 Hits 六年前,因为工作中使用到 jQuery 的上传组件 Uploadify ,写了一篇<JQuery上传插件Uploadify使用详解>的博客来介绍 Uploadify ,其实只是将官方文档简单翻译了下.几年下来居然有50多万的访问量,而且每天通过各种搜索引擎有大几百的朋友会访问到这篇文章.六年时间 Uploadify 从当时的2.1.0到了现在的3.2.1,变化还是

jQuery上传插件Uploadify出现Http Error 302错误解决

前段时间介绍过jquery uploadify上传插件的使用方法,我在使用中遇到过Http Error 302错误问题,应该会有很多人在使用中遇到过,在此记录下来: 首 先http 302是请求被重定向的意思,这就很容易理解了,如果你的uploadify处理上传脚本有session验证,就会出现此错误,因为flash在执行 post请求的时候没有包含cookie信息,而服务器的session会根据客户端的cookie来得到SESSIONID.没有提交cookie自然 就不能获取到session,

jquery 上传插件 uploadify

官网:http://www.uploadify.com/社区:http://www.uploadify.com/forum/ 基于jQuery的文件上传插件,有flash(Uploadify)和html5(UploadFive)两个版本 特点说明:-----------------1.支持多文件上传2.支持拖放上传(html5版本)3.上传进度显示4.可自定义上传限制,包括文件大小.文件数量.文件类型5.高度可定制性 关于下载-------------------Uploadify™:基于fla

JQuery上传插件Uploadify使用详解

目录[-] Options选项设置 Events事件 Methods方法 Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中的使用,您也可以点击下面的链接进行演示或下载. 官方下载 官方文档 官方演示 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 <html xmlns="http://www.w3.org/1999/xhtml"> <he

JQuery上传插件Uploadify使用详解(转)

Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.不过官方提供的实例时php版本的,本文将详细介绍Uploadify在Aspnet中的使用,您也可以点击下面的链接进行演示或下载. 官方下载 官方文档 官方演示 首先按下面的步骤来实现一个简单的上传功能. 1 创建Web项目,命名为JQueryUploadDemo,从官网上下载最新的版本解压后添加到项目中. 2 在项目中添加UploadHandler.ashx文件用来处理文件的上传. 3 在项目中添加UploadFil

jQuery上传插件Uploadify使用帮助

Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.它的功能特色总结如下: 支持单文件或多文件上传,可控制并发上传的文件数 在服务器端支持各种语言与之配合使用,诸如PHP,.NET,Java…… 通过参数可配置上传文件类型及大小限制 通过参数可配置是否选择文件后自动上传 易于扩展,可控制每一步骤的回调函数(onSelect, onCancel……) 通过接口参数和CSS控制外观 使用帮助: 官网地址:http://www.uploadify.com/ 官方参数配置文档