Jquery自定义图片上传插件
1 概述
编写后台网站程序大多数用到文件上传,可是传统的文件上传控件不是外观不够优雅,就是性能不太好看,翻阅众多文件上传控件的文章,发现可以这样去定义一个文件上传控件,实现的文件上传的效果图如下:

2、该图片上传插件实现功能如下:
1>能够异步上传,上传成功之后,服务器返回响应结果;能够定义上传前和上传后自定义处理方式;
2>能够实现文件格式判断,过滤非图片文件;
3>服务端能够过滤重复上传的图片;
3、页面代码分析:
1>、Jquery图片上传插件代码如下:
// 选中文件, 提交表单(开始上传)
(function ($) {
var iframe;
var form;
var opeartData=null; $.uploadDefault = {
url: '',
fileName: 'filedata',
dataType: 'json',
imgshow: '',
onSend: function(){ return true; },
onSubmit: function () { return true; },
onComplate: function () { return true; }
}; $.UpLoadForm = { //图片格式验证
$PicChange: function (obj)
{
if (opeartData.imgshow != null && opeartData.imgshow != '')
{
$("#" + opeartData.imgshow).val($(obj).val());
}
}, //判断pic格式是否正确
$IsPicCheck: function (fileName)
{
if (fileName != null && fileName != "") {
//lastIndexOf如果没有搜索到则返回为-1
if (fileName.lastIndexOf(".") != -) {
var fileType = (fileName.substring(fileName.lastIndexOf(".") + , fileName.length)).toLowerCase();
var suppotFile = new Array();
suppotFile[] = "jpg";
suppotFile[] = "gif";
suppotFile[] = "bmp";
suppotFile[] = "png";
suppotFile[] = "jpeg";
for (var i = ; i < suppotFile.length; i++) {
if (suppotFile[i] == fileType) {
return true;
} else {
continue;
}
}
return false;
} else {
return false;
}
}
}, $ImgUpLoad: function () {
if (opeartData == null)
{
//没有选择图片或者图片已经上传
return;
}
opeartData = $.extend($.uploadDefault, opeartData);
var canSend = opeartData.onSend();
if (!canSend) {
return;
}
if (!opeartData.onSubmit())//图片验证
{
return;
}
form.submit();
iframe.load(function() {
var contents = $(this).contents().get();
var data = $(contents).find('body').text();
if ('json' == opeartData.dataType) {
data = window.eval('(' + data + ')');
}
opeartData.onComplate(data);
setTimeout(function() {
iframe.remove();
form.remove();
opeartData = null;
}, );
});
}, $OpenFIle: function (options) {
opeartData = $.extend($.uploadDefault, options);
if (opeartData.url == '') {
return;
}
var frameName = 'upload_frame_0';
var formName = 'upload_form_0';
if ($("#" + formName).length > ) {
iframe = $("#" + frameName);
form = $("#" + formName);
}
else {
iframe = $('<iframe style="position:absolute;top:-9999px" id="' + frameName + '" />').attr('name', frameName);
form = $('<form method="post" style="display:none;" id="' + formName + '" enctype="multipart/form-data" />').attr('name', 'form_' + frameName);
form.attr("target", frameName).attr('action', opeartData.url);
// form中增加数据域
var formHtml = '<input type="file" name="' + opeartData.fileName + '" onchange="$.UpLoadForm.$PicChange(this)")"/>';
form.append(formHtml);
iframe.appendTo("body");
form.appendTo("body");
}
var fileInput = $('input[type=file][name=' + opeartData.fileName + ']', form);
fileInput.click();
}
}
})(jQuery);
2>前台页面调用代码如下,Jquery插件,别忘记引入Jquery对应js:
<script type="text/javascript">
$(function () {
$("#imagetx").bind("click", function () {
$.UpLoadForm.$OpenFIle({
// 上传地址
url: '../upload/UploadImg',
// 文件域名字
fileName: 'upimage',
// 其他表单数据
imgshow: 'imagetx',
// 上传完成后, 返回json, text
dataType: 'json',
// 上传之前回调,return true表示可继续上传
onSend: function () {
$.ShowLoadDialog();
return true;
},
onSubmit: function () {
var picpath = $("#imagetx").val();
console.log(picpath);
if (!$.UpLoadForm.$IsPicCheck(picpath))
{
$.ShowLoadDialogClose();
$TipDialog("图片上传", "请上传jpg、gif、bmp、png、jpeg格式的图片!");
return false;
}
return true;
},
// 上传之后回调
onComplate: function (data) {
$.ShowLoadDialogClose();
if (data != null)
{
console.log(data)
if (data.errorcode == "") {
$("#showpic").attr("src", data.picurl);
}
else {
$TipDialog("图片上传", "图片上传失败");
}
}
}
});
});
$("#btnupload").bind("click", function () {
$.UpLoadForm.$ImgUpLoad();
}) });
</script>
3>后台服务器验证:
[HttpPost]
public JsonResult UploadImg(HttpPostedFileBase upimage)
{
string pic = "", error = "",pcode="";
try
{
if (upimage != null)
{
string fileName = DateTime.Now.ToString("yyyyMMdd") + System.IO.Path.GetFileName(upimage.FileName);
string[] pictext = { ".jpg",".gif",".bmp",".png",".jpeg" };
string extenname= System.IO.Path.GetExtension(fileName);
if (pictext.Contains(extenname))
{
string filePhysicalPath = Server.MapPath("~/Upload/Images/" + fileName);
upimage.SaveAs(filePhysicalPath);
pic = "/Upload/Images/" + fileName;
}
else
{
error = "";
pic =pic ;
}
}
}
}
catch (Exception ex)
{
error = ex.Message;
}
return Json(new
{
errorcode = error,
picurl = pic,
piccode = pcode
});
}
图片上传也就完成,展示的效果也如上面所示;
Jquery自定义图片上传插件的更多相关文章
- CKEditor5 + vue2.0 自定义图片上传、highlight、字体等用法
因业务需求,要在 vue2.0 的项目里使用富文本编辑器,经过调研多个编辑器,CKEditor5 支持 vue,遂采用.因 CKEditor5 文档比较少,此处记录下引用和一些基本用法. CKEdit ...
- 赞!带进度条的 jQuery 文件拖放上传插件
jQuery File Uploader 是一个 jQuery 文件拖放上传插件,包括 Ajax 上传和进度条效果.作者编写这个插件的想法是要保持它非常简单,不像其他的插件,很多的标记,并提供一些 H ...
- WebUploader文件图片上传插件的使用
最近在项目中用到了百度的文件图片上传插件WebUploader.分享给大家 需要在http://fex.baidu.com/webuploader/download.html点击打开链接下载WebUp ...
- jquery uploadify文件上传插件用法精析
jquery uploadify文件上传插件用法精析 CreationTime--2018年8月2日11点12分 Author:Marydon 一.参数说明 1.参数设置 $("#fil ...
- 带进度条的 jQuery 文件拖放上传插件
jQuery File Uploader :jQuery File Uploader 是一个 jQuery 文件拖放上传插件 兼容性判断 下载:https://github.com/danielm/u ...
- ueditor 百度编辑器 自定义图片上传路径和格式化上传文件名
今天项目中需要自定义图片上传的保存路径,并且不需要按照日期自动创建存储文件夹和文件名,我的ueditor版本是1.3.6.下面记录一下我配置成功的方法,如果有什么不对的地方欢迎指出,共同学习: 1:我 ...
- Aps.net中基于bootstrapt图片上传插件的应用
Aps.net中基于bootstrapt图片上传插件的应用 在最近的项目中需要使用一个图片上传的功能,而且是多张图片同时上传到服务器的文件夹中,将图片路径存放在数据库中.为了外观好看使用了bootst ...
- ssm项目中KindEditor的图片上传插件,浏览器兼容性问题
解决办法: 原因:使用@ResponseBody注解返回java对象,在浏览器中是Content-Type:application/json;charset=UTF-8 我们需要返回字符串(Strin ...
- ueditor图片上传插件的使用
在项目里使用到ueditor图片上传插件,以前图片上传都是直接使用js代码直接上传图片,比较麻烦,而且效率也比较低,而ueditor这款插件完美的解决了这个问题,这个是百度开发的一款富文本编辑器,在这 ...
随机推荐
- STM32通用定时器(转载)
STM32的定时器功能很强大,学习起来也很费劲儿. 其实手册讲的还是挺全面的,只是无奈TIMER的功能太复杂,所以显得手册很难懂,我就是通过这样看手册:while(!SUCCESS){看手册-}才搞明 ...
- Android 创建内容提供器(ContentResolver)
如果想实现跨程序共享数据的功能,官方推荐的方式就是使用内容提供器,可以通过新建一个类去继承 ContentResolver 的方式来创建一个自己的内容提供器. ContentProvider 类中有六 ...
- .oi 小游戏
http://agar.io/ http://diep.io/ http://slither.io/ http://splix.io/ http://wilds.io/ http://kingz.io ...
- dp题目列表
此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 11 ...
- COGS 2437 暗之链锁 II 题解
[题意] 给出一个有n个点的无向图,其中有n-1条主要边且这些主要边构成一棵树,此外还有m条其他边,求斩断原图的一条主要边和k条其他边使得图不连通的方案数mod109+7的值. 注意,就算你切断一条主 ...
- phpcmsV9.5.8整合百度编辑器Ueditor1.4.3教程
最近在搞phpcms视频功能,官方的视频功能实在是坑,刚开始是想将优酷的上传功能集成到ckeditor,在coding上有个项目,上传已经集成好了,还没有做上传后视频的获取和显示 项目地址:https ...
- PHP常用字符串操作函数实例总结(trim、nl2br、addcslashes、uudecode、md5等)
/*常用的字符串输出函数 * * echo() 输出字符串 * print() 输出一个或多个字符串 * die() 输出一条信息,并退出当前脚本 * printf() 输出格式化字符串 * spri ...
- easyui datagrid中datetime字段的显示和增删改查问题
datagrid中datetime字段的异常显示: 使用过easyui datagrid的应该都知道,如果数据库中的字段是datetime类型,绑定在datagrid显式的时候会不正常显示,一般需要借 ...
- windows下打开VMware虚拟机时提示内存不足的处理方法
参考:http://thinkpig007.blog.51cto.com/971471/1589831 以管理员身份运行vmware.exe即可 错误的错误提示: Not enough physica ...
- 抓取网页内容生成kindle电子书
参考: http://calibre-ebook.com/download_linux http://blog.codinglabs.org/articles/convert-html-to-kind ...