ajax图片上传mysql,图片上传插件,基于jquery的上传插件,ajax图片上传,再更新...

该博客介绍了如何在视频网站上实现在上传视频后自动生成缩略图的功能,同时提供了用户自定义上传图片的选项。通过jQuery扩展实现上传控件,包括检查文件类型、创建上传表单、显示和删除图片等操作。当用户点击生成缩略图按钮时,后台处理并返回缩略图URL,前端将其显示。此外,还提供了一个删除文件的辅助函数。
摘要由CSDN通过智能技术生成

由于在项目中使用遇到了一些情况,之前的方法无法满足这些需求,于是重新修改了一下。遇到什么新的需求呢?项目做的是一个视频网站,想在上传视频后点击某个按钮自动生成视频的缩略图,如果不想自动生成(自动生成会有点模糊),则可以自己上传图片。大概的界面如下:

20121119021953462.jpg

要想实现这样的功能,必须得把upload中的一些方法暴露出来这样就可以在外部中使用了。更新后的写法。

[javascript]

(function ($) {

$.extend($.fn, {

upload: function (options) {

options = $.extend(options, {

fileType: "gif|jpg|jpeg|png|bmp",

url: "/user/upload.aspx",

params: "",

width: "100",

height: ""

});

var methods = new uploader(options.url, options.params, null, options.width, options.height);

//上传主函数

this.each(function () {

var $this = $(this);

var wrap = $this.parent();

//初始化上传控件

var uploador = new uploader(options.url, options.params, wrap, options.width, options.height);

uploador.onload();

$this.bind("click", function () {

var inputfile = wrap.find("input:file");

var fileBox = inputfile.parent();

if (inputfile.val() === "") {

alert("请选择要上传的图片!");

return false;

}

//验证图片

if (!uploador.checkFile(inputfile.val(), options.fileType)) {

alert("文件格式不正确,只能上传格式为:" + options.fileType + "的文件。");

return false;

}

//创建表单

var form = uploador.createForm();

//把上传控件附加到表单

inputfile.appendTo(form);

                    fileBox.html("loading.gif%5C%22   正在上传...  "); 

$this.attr("disabled", true);

try {

//开始ajax提交表单

form.ajaxSubmit({ type: "POST",

success: function (data) {

data = eval("(" + data + ")");

if (data.result !== "1") {

alert(data.msg);

} else {

uploador.delToShow(data.imgurl);

}

$this.attr("disabled", false);

fileBox.html("");

form.remove();

}

});

} catch (e) {

alert(e.message);

}

});

});

return methods; //返回methods方便从外部调用

}

});

///

/// 初始化上传控件 url=上传路径,不加参数 params=参数如name=jaryway&pass=123

///

/// 上传路径

/// 上传的参数 eg:"userid=1&username=xiaoming"

/// 上传体(整个上传体)

/// 显示图的宽,为空则表示自动(给定高度则宽度自动)或默认 eg:"100"

/// 显示图的高,为空则表示自动(给定宽度则高度自动)或默认 eg:"100"

var uploader = function (url, params, wrap, width, height) {

$.extend(uploader, {

methods: {

//检查文件后缀 val1=上传的文件名称,val2=允许的文件类型,如:gif|jpg|jpeg|png|bmp

checkFile: function (val1, val2) {

//获得文件后缀

val1 = val1.substring(val1.lastIndexOf("."), val1.length)

val1 = val1.toLowerCase();

if (typeof val2 !== 'string' || val2 === "") { val2 = "gif|jpg|jpeg|png|bmp"; }

return new RegExp("\.(" + val2 + ")$").test(val1);

},

//创建上传表单

createForm: function () {

var uploadform = document.createElement("form");

uploadform.action = url + "?oper=upload" + params + "&r=" + Math.random();

uploadform.method = "post";

uploadform.enctype = "multipart/form-data";

uploadform.style.display = "none";

//将表单加当document上,

//创建表单后一定要加上这句否则得到的form不能上传。document后要加上body,否则火狐下不行。

document.body.appendChild(uploadform);

return $(uploadform);

},

//创建图片

createImage: function () {

//不能用 new Image() 来创建图片,否则ie下不能改变img 的宽高

var image = $(document.createElement("img"));

image.attr({ "title": "双击图片可删除图片!" });

if (width !== "")

image.attr({ "width": width });

if (height !== "")

image.attr({ "height": height });

return image;

},

//显示图片

showImage: function (imgurl, wrap1) {

var image = this.createImage();

wrap = typeof wrap1 === "object" ? wrap1 : wrap;

var hiddenfile = wrap.find("input:hidden");

hiddenfile.val(imgurl);

wrap.find(".imgdiv").html("");

var a = $("查看");

a.attr("href", imgurl);

//要先append再给img赋值,否则在ie下不能缩小宽度。

image.appendTo(wrap.find(".imgdiv"));

image.attr("src", imgurl);

a.appendTo(wrap.find(".imgdiv"));

this.bindDelete(wrap);

},

//删除原图(如果原图存在)后显示

delToShow: function (imgurl, wrap1) {

wrap = typeof wrap1 === "object" ? wrap1 : wrap;

var hiddenfile = wrap.find("input:hidden");

//上传成功后,再删除图片,以免图片丢失

//若隐藏域中有图片,先删除图片

if (hiddenfile.val() !== "") {

this.delImage(imgurl, false, wrap);

}

else {

this.showImage(imgurl, wrap);

}

},

//绑定双击删除事件

bindDelete: function (wrap1) {

var $this = this;

wrap = typeof wrap1 === "object" ? wrap1 : wrap;

wrap.find(".imgdiv").find("img").bind("dblclick", function () {

$this.delImage("",true, wrap);

});

},

//删除图片,如果imgurl不为空则显示新图片

//isShowBox表示是否弹出提示信息

//如果imgurl不等于空字符串则在删除图片后显示新图片

delImage: function (imgurl, isShowBox, wrap1) {

$this = this;

wrap = typeof wrap1 === "object" ? wrap1 : wrap;

var hiddenfile = wrap.find("input:hidden");

if (typeof hiddenfile !== "undefined" && hiddenfile.val() !== "") {

var data = { oper: "delete", imgurl: hiddenfile.val(), r: Math.random() };

$.getJSON(url, data, function (data) {

if (isShowBox) { alert(data.msg) }

if (data.result === "1") {

hiddenfile.val("");

wrap.find(".imgdiv").html("");

}

if (imgurl !== "") {

$this.showImage(imgurl, wrap);

}

});

}

},

onload: function (wrap1) {

wrap = typeof wrap1 === "object" ? wrap1 : wrap;

var hiddeninput = wrap.find("input:hidden");

if (typeof hiddeninput !== "undefined" && hiddeninput.val() !== "") {

this.showImage(hiddeninput.val())

}

}

}

});

return uploader.methods;

}

})(jQuery);

调用:

[html]

var uploador;

$(document).ready(function () {

uploador = $("input.upload").upload();

//自动生成图片

$("#genImage").click(function () {

if ($("#txtFilePath").val() == "") {

alert("请先上传视频文件");

return false;

}

Lvegu.Loading.show("正在生成视频缩略图,请等待...");

$.ajax({

type: "get",

dataType: "json",

data: "file=" + $("#txtFilePath").val(),

url: "courseware_ajax.aspx?oper=ajaxGenImage&vsttm=" + (new Date().getTime()),

error: function (XmlHttpRequest, textStatus, errorThrown) { Lvegu.Loading.hide(); alert(XmlHttpRequest.responseText); },

success: function (d) {

Lvegu.Loading.hide();

switch (d.result) {

case '-1':

case '0':

alert(d.msg);

break;

case '1':

uploador.delToShow(d.imgurl, $("#upimg"));

break;

}

}

});

});

});

function delFile(filepath) {

var r = Math.random();

$.getJSON("courseware_ajax.aspx?oper=ajaxDeleteFile&r=" + r + "&file=" + filepath, function (d) {

return d.result === "1";

});

}

html代码:

[html]

资源路径

........

ssss

上传课件...................  www.2cto.com缩略图

暂时先整了到这里,过段时间在写个详细的和大家分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值