这篇文章主要是对前两篇关于ajaxfileupload.js插件的文章

的一个收关。但是最初也是因为想做这么一个功能,一点一点的引发出了好多问题,不断去学习,研究,才写了这三篇。

早些时候已经实现了上传头像的功能,但是代码却是零零散散的,有html,有jQuery还有c#,所以就决定把这个功能独立出来,当个插件用会方便很多。而事实是在封装成插件的过程中,也学到了很多知识。

下面给大家看一下界面:

1、初始情况下

2、点击上传头像,弹出选择,预览浮动框

3、选择图片

4、确定后,符合要求,会提示成功,不符合要求,也会做出相应的提示

5、预览

6、确定上传

下面是部分代码

js部分:$.fn.extend({

ShowTheFloatDiv: function (obj) {

$(this).click(function () {

$("body").find("*").not("div.float-outer").attr("disabled", "disabled");

var $float = jQuery.CreateTheFloatDiv();

$img_outer_obj = obj;

});

}

});

$.extend({

CreateTheFloatDiv: function () {

if ($(".float-outer").size() == 1) {

return $(".float-outer");

}

var left_offset = ($(window).width() - 600) / 2;//显示在浏览器窗口比较正的位置,看着比较舒服

var top_offset = ($(window).height() - 278) / 3;

var theFloatDivHtml = "

";

theFloatDivHtml += "

上传头像

";

theFloatDivHtml += "

";

theFloatDivHtml += "

文件名:";

theFloatDivHtml += " ";

theFloatDivHtml += "";

theFloatDivHtml += "";

theFloatDivHtml += "

";

theFloatDivHtml += "

";

theFloatDivHtml += "图片预览:";

theFloatDivHtml += "

";

theFloatDivHtml += "";

theFloatDivHtml += "60*60";

theFloatDivHtml += "

";

theFloatDivHtml += "

";

theFloatDivHtml += "";

theFloatDivHtml += "120*120";

theFloatDivHtml += "

";

theFloatDivHtml += "

";

theFloatDivHtml += "

";

theFloatDivHtml += "

";

theFloatDivHtml += "";

theFloatDivHtml += "";

theFloatDivHtml += "

";

theFloatDivHtml += "

";

$("body").append(theFloatDivHtml);return $(".float-outer");

}

});

var $img_outer_obj;

$(function () {

//取消事件

$("body").delegate("#btn_cancel", "click", function () {

$(".float-outer").remove();

$("body").find("*").removeAttr("disabled");

});

//选择图片事件

$("body").delegate("#btn_selectfile", "click", function () {

$("#btn_upload").trigger(e);

});

var e = jQuery.Event("click");

$("body").delegate("#btn_upload", "click", function () {

}).delegate("#btn_upload", "change", function () {

var curPATH = getFilePath($(this).get(0));

var fileName = curPATH.substring(curPATH.lastIndexOf("\\") + 1);

var type = curPATH.substring(curPATH.lastIndexOf('.') + 1).toLowerCase();

if (type == "jpg" || type == "gif" || type == "bmp") {

$("input#tb_filename").val(fileName);

if ($("input#tb_filename").val() == "") {

alert("请先上传文件!");

return;

}

$.ajaxFileUpload

(

{

url: '/UploadPortrait.aspx', //用于文件上传的服务器端请求地址,需要根据实际情况进行修改

secureuri: false, //一般设置为false

fileElementId: $("input#btn_upload").attr("id"), //文件上传空间的id属性            //$("form").serialize(),表单序列化。指吧所有元素的ID,NAME 等全部发过去

dataType: 'json', //返回值类型 一般设置为json

complete: function () {//只要完成即执行,最后执行

},

success: function (data, status)  //服务器成功响应处理函数

{

if (typeof (data.error) != 'undefined') {

if (data.error != '') {

if (data.error == "1001") {

}

else if (data.error == "1002") {

$("input#tb_filename").val("");

$(".preview60").attr("src", "");

$(".preview120").attr("src", "");

}

alert(data.msg);

return;

} else {

alert(data.msg);

}

}

$(".preview60").attr("src", data.imgurl);

$(".preview120").attr("src", data.imgurl);

},

error: function (data, status, e)//服务器响应失败处理函数

{

alert(e);

}

}

)

return false;

}

else {

alert("请选择正确的图片格式(.jpg|.gif|.bmp)");

}

});

$("body").delegate("#btn_ok", "click", function () {

$img_outer_obj.attr("src", $(".preview120").attr("src"));

$(".float-outer").remove();

$("body").find("*").removeAttr("disabled");

});

//移动浮动框

var offset_left, offset_top, moveFlag;

$("body").delegate(".float-header", "mousedown", function (e) {

moveFlag = true;

offset_left = e.pageX - $(this).offset().left;

offset_top = e.pageY - $(this).offset().top;

$("body").delegate(".float-header", "mousemove", function (e) {

if (moveFlag) {

$(".float-outer").css("left", e.pageX - offset_left + "px").css("top", e.pageY - offset_top + "px");

}

}).delegate(".float-header", "mouseup", function () {

moveFlag = false;

})

})

});

C#部分:

因为上传文件用到了ajax,需要先将图片上传到本地,这里也算是一个比较纠结的事情吧,因为如果想预览,除非用一些插件,否则使用的方法都得是先上传,再预览这样。这种来者都要不拒的事,看起来比较流氓哈~~HttpFileCollection files = System.Web.HttpContext.Current.Request.Files;

string msg = string.Empty;

string error = string.Empty;

string imgurl = string.Empty;

protected void Page_Load(object sender, EventArgs e)

{

if (files.Count > 0)

{

if (System.IO.File.Exists(Server.MapPath("/UploadImages/") + files[0].FileName))

{

msg = "图片已存在";

error = "1001";

string res1 = "{ error:'" + error + "', msg:'" + msg + "',imgurl:'" + imgurl + "'}";

Response.Write(res1);

Response.End();return;

}

if (files[0].ContentLength > 4 * 1024 * 1024)

{

msg = "图片大小不能超过4M";

error = "1002";

string res1 = "{ error:'" + error + "', msg:'" + msg + "',imgurl:'" + imgurl + "'}";

Response.Write(res1);

Response.End();return;

}

try

{

files[0].SaveAs(Server.MapPath("/UploadImages/") + System.IO.Path.GetFileName(files[0].FileName));

}

catch (System.IO.DirectoryNotFoundException)

{

}

msg = " 上传成功! 图片大小为:" + files[0].ContentLength + "K";

imgurl = "/UploadImages/" + files[0].FileName;

string res = "{ error:'" + error + "', msg:'" + msg + "',imgurl:'" + imgurl + "'}";

Response.Write(res);

Response.End();

}

}

如何调用此插件

$(function () {

$("#btn_portrait").ShowTheFloatDiv($("#img_portrait"));

})

注意事项

必须在“上传头像”按钮所在页面引入以下几个文件

UploadPortrait.css

ajaxfileupload.js

jquery-2.0.3.min.js(jQuery插件要求在1.4.2版本之上)

UploadPortrait.js

如果大家在使用过程中出现问题,可以先把前面相关的两篇文章略读一下,大概就能找到原因了。

大致这个功能就是如上这样,感兴趣的朋友可以从下面的地址下载Demo运行看看。此外想说的是,因为是头像嘛,一定要存数据库的,但是在Demo里我并没有写,这个东西就是看大家想怎么实现了,要是我的话,因为之前预览都要将图片存到本地,所以如果存数据库的话,当然是会存图片的url了,那这样就比较好办了。

总的来说,要比想像中的快些完成了这个插件,功能倒是达到了自己的预期,但是界面来说,还有很长的一段路要走。第一次写jQuery插件,很多东西都不太专业,希望大牛们能多多给予指正和帮助。

关于上传的Demo补充内容:

上传的demo有两个问题需要说明一下,希望下载的朋友能够注意到,并流畅运行。

1、因为demo是ASP.NET项目,所以大家如想正常运行,需要在本地新建一个web项目,把我上传的uploadportrait.csproj这个文件添加进去。下次我会直接打包一个完整的web项目再上传,这次没做好希望大家给予谅解。另,我开发的时候Visual Studio版本为2010,这个望大家注意一下。

2、在调用插件的代码部分,demo里写的是

$(function () {

$("#btn_portrait").ShowTheFloatDiv($(img_portrait));

})

应该把$(img_portrait)改成$("#img_portrait"),这个也是自己的失误,下回会注意。

补充:

ajax图片上传插件demo,jQuery 自制上传头像插件-附带Demo实例(ajaxfileupload.js第三弹)...相关推荐

  1. jQuery 自制上传头像插件-附带Demo实例(ajaxfileupload.js第三弹)

    这篇文章主要是对前两篇关于ajaxfileupload.js插件的文章 <ASP.NET 使用ajaxfileupload.js插件出现上传较大文件失败的解决方法(ajaxfileupload. ...

  2. html的3d旋转木马插件,jRCarousel | jQuery响应式3D旋转木马插件

    jR3DCarousel是一款效果非常炫酷的3D旋转木马jQuery插件.该旋转木马插件可以通过参数设置来修改旋转木马的类型,可以设置显示模式和easing动画缓动模式等.它的特点还有: 多种动画效果 ...

  3. jQuery上传插件Uploadify使用Demo、本地上传(ssm框架下)

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 效果: 1. jar包导入: <!-- 文件上传组件 --><dependency ...

  4. jq ajax异步上传图片插件,jQuery异步上传文件插件ajaxFileUpload详细介绍

    一.ajaxFileUpload是一个异步上传文件的jQuery插件. 传一个不知道什么版本的上来,以后不用到处找了. 语法:$.ajaxFileUpload([options]) options参数 ...

  5. ajax图片上传(asp.net +jquery+ashx)

    一.建立Default.aspx页面 [csharp] view plaincopy <%@ Page Language="C#" AutoEventWireup=" ...

  6. jquery 文件上传插件_10个jQuery文件上传插件

    jquery 文件上传插件 这篇热门文章于2016年7月更新,以反映文件上传插件的当前状态. 有关旧文章的评论已删除. 使用Ajax实施文件上传可能非常困难,特别是如果您需要拖放支持,图像预览或进度条 ...

  7. AjaxFileUpload文件上传组件(php+jQuery+ajax)

    jQuery插件AjaxFileUpload可以实现ajax文件上传,下载地址:http://www.phpletter.com/contents/ajaxfileupload/ajaxfileupl ...

  8. jquery文件上传插件uploadify 讲解

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1.名词解释: tracker服务器:中文叫做跟踪器,主要做调度工作,在访问上起负载均衡的作用.(t ...

  9. java上传头像插件_JSP+SpringMVC框架使用WebUploader插件实现注册时候头像图片的异步上传功能...

    一.去官网下载webuploader文件上传插件 下载好后把它放到Javaweb项目的文件夹中(我放到了webcontent下面的static里面) 二.复制前端的样式 把这段代码放到你想要放到的位置 ...

最新文章

  1. oracle所有的乱码解决方案
  2. LeetCode-动态规划背包题-416. 分割等和子集
  3. 全球及中国生物柴油行业产量规模及市场消费需求预测报告2021-2027年
  4. jersey tomcat MySQL_使用 Jersey 和 Apache Tomcat 7 构建 JAX-RS 环境
  5. 生意做到一定规模,老板想面面俱到,亲力亲为就不可能了
  6. 明白了一个重要的道理
  7. 苹果Mac出版物设计必备软件:​​​​Affinity Publisher
  8. 布隆的盾能挡机器人_2020 年双十一有哪些扫地机器人值得买?
  9. sublime text3怎么运行python代码_怎么用sublime text 3搭建python 的ide?
  10. mysql数据库置疑,sqlserver2000数据库置疑的解决方法
  11. 教师招聘面试视频 计算机,怎么准备教师招聘面试试讲?(附视频)
  12. c语言gets和getchar区别,C语言中 gets 和 getchar 有什么区别
  13. 脑神经外科专家张正贤医生(转)
  14. 个人项目总结(论坛系统)
  15. 【docker lnmp】 2、容器mysql 连接问题 getaddrinfo failed
  16. 深度理解RNN的梯度消失和LSTM为什么能解决梯度消失
  17. 辽东楤木的高质量参考基因组组装和遗传转化体系开发
  18. vw 前端_Vw / Vh 更好的做前端适配
  19. ProcDump+Mimikatz绕过杀毒软件抓密码
  20. Debian11_kubeadm1.23.5使用ingress-nginx暴露dashboard(3)

热门文章

  1. 【课程设计】通讯录管理系统(源码 + 详解)
  2. PRML第九章读书笔记——Mixture Models and EM K均值/K中心点、高斯混合奇异性、EM观点下的高斯混合/K-means/混合伯努利分布/贝叶斯线性回归、推广EM算法
  3. 【SQL语言——SELECT查询操作】
  4. 设计之美 - 设计模式学习
  5. 产品从无到有的完整工作流程
  6. 15个针对初学者的Python项目创意
  7. Tarjan(塔杨)算法详解
  8. Python3,这个方法,应该是读取文件天花板了。
  9. Oracle常用函数汇总记录
  10. 帝国cms推送插件-帝国cms管理系统-帝国cms免费模板插件