JQuery异部上传多个文件
这个例子需要用到JQuery和一个JQuery插件ajaxupload.js,不说太多。直接上代码:
前台:
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script src="Scripts/ajaxupload.js" type="text/javascript"></script>
<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script src="Scripts/ajaxupload.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
new AjaxUpload('#buttonUpload', {
action: 'Handler2.ashx',
data: { Folder: 'commodity', Count: $("#hidd_imgCount").val() },
onSubmit: function (file, ext) {
$("#loading").show();
if (!/^(jpg|bmp|png|gif)$/.test(ext)) {
alert("只能上传格式为(bmp、jpg、png、gif)格式的图片!");
return false;
}
//判断上传图片的数量
var imgCount = $("#hidd_imgCount").val();
if (parseInt(imgCount) >= 5) {
alert("最多只能上传5张图片!");
$("#loading").hide();
return false;
}
this.disable();
},
onComplete: function (file, response) {
$("#loading").hide();
this.enable();
var responseText = response.toString();
if (/MSIE 6.0/i.test(navigator.userAgent)) {
responseText = getCookies();
}
//显示1
var reArray = responseText.split('|');
if (reArray[0] == "1") {
alert("上传的文件不能大于4MB!");
return false;
}
else if (reArray[0] == null || reArray[0] == "") {
alert("上传失败!");
return false;
}
else {
var param = reArray[1];
if (reArray.length >= 3) {
param += "|" + reArray[2];
}
var divDocument = "<div id=\"" + reArray[1].substring(0, reArray[1].lastIndexOf('.') - 1) + "\" class=\"div_upfiles\">" + file + " <a href=\"javascript:;\" onclick=\"delAttach('" + param.toString() + "','" + file + "');\">删除</a>" + "</div>";
$("#div_Result").append(divDocument);
}
//用于记录,上传的图片
document.getElementById("hidd_UploadFiles").value += param + "%" + file + "&";
var imgCount = $("#hidd_imgCount").val();
$("#hidd_imgCount").val(parseInt(imgCount) + 1);
}
});
});
function delAttach(param, showName) {
$.ajax({
url: "RemoveImage.ashx?ID=" + param,
success: function (result) {
if (result.toString() != "false") {
$("#div_Result").remove("#" + result);
$("#" + result).replaceWith("");
//移除内容,同时更新Hidd
var oldVal = $("#hidd_UploadFiles").val();
var newVal = oldVal.replace(param + "%" + showName + "&", "");
$("#hidd_UploadFiles").val(newVal);
var imgCount = $("#hidd_imgCount").val();
$("#hidd_imgCount").val(imgCount - 1);
}
}
});
}
//当点击Submit引发回调,且并没有提交成功,引发回调时,重新载入上传UploadFiles部分
function reloadUpFiles() {
var hidd = $("#hidd_UploadFiles").val();
if (hidd != "") {
var arrayFiles = hidd.split('&');
$("#div_Result").html("");
for (var i = 0; i < arrayFiles.length; i++) {
if (arrayFiles[i].toString().length > 0) {
var aFile = arrayFiles[i].split('%');
var sysName = aFile[0].toString();
var showName = aFile[1].toString();
var divDocument = "<div id=\"" + sysName.substring(0, sysName.lastIndexOf('.') - 1) + "\" class=\"div_upfiles\">" + showName + " <a href=\"javascript:;\" onclick=\"delAttach('" + sysName + "','" + showName + "');\">删除</a>" + "</div>";
$("#div_Result").append(divDocument);
}
}
}
}
function getCookies() {
var cookies = document.cookie;
var innerText = cookies.substring(cookies.lastIndexOf('ImgResponse=') + 12, cookies.lastIndexOf('{1}'));
return innerText;
}
lt;/script>
<script type="text/javascript">
$(document).ready(function () {
new AjaxUpload('#buttonUpload', {
action: 'Handler2.ashx',
data: { Folder: 'commodity', Count: $("#hidd_imgCount").val() },
onSubmit: function (file, ext) {
$("#loading").show();
if (!/^(jpg|bmp|png|gif)$/.test(ext)) {
alert("只能上传格式为(bmp、jpg、png、gif)格式的图片!");
return false;
}
//判断上传图片的数量
var imgCount = $("#hidd_imgCount").val();
if (parseInt(imgCount) >= 5) {
alert("最多只能上传5张图片!");
$("#loading").hide();
return false;
}
this.disable();
},
onComplete: function (file, response) {
$("#loading").hide();
this.enable();
var responseText = response.toString();
if (/MSIE 6.0/i.test(navigator.userAgent)) {
responseText = getCookies();
}
//显示1
var reArray = responseText.split('|');
if (reArray[0] == "1") {
alert("上传的文件不能大于4MB!");
return false;
}
else if (reArray[0] == null || reArray[0] == "") {
alert("上传失败!");
return false;
}
else {
var param = reArray[1];
if (reArray.length >= 3) {
param += "|" + reArray[2];
}
var divDocument = "<div id=\"" + reArray[1].substring(0, reArray[1].lastIndexOf('.') - 1) + "\" class=\"div_upfiles\">" + file + " <a href=\"javascript:;\" onclick=\"delAttach('" + param.toString() + "','" + file + "');\">删除</a>" + "</div>";
$("#div_Result").append(divDocument);
}
//用于记录,上传的图片
document.getElementById("hidd_UploadFiles").value += param + "%" + file + "&";
var imgCount = $("#hidd_imgCount").val();
$("#hidd_imgCount").val(parseInt(imgCount) + 1);
}
});
});
function delAttach(param, showName) {
$.ajax({
url: "RemoveImage.ashx?ID=" + param,
success: function (result) {
if (result.toString() != "false") {
$("#div_Result").remove("#" + result);
$("#" + result).replaceWith("");
//移除内容,同时更新Hidd
var oldVal = $("#hidd_UploadFiles").val();
var newVal = oldVal.replace(param + "%" + showName + "&", "");
$("#hidd_UploadFiles").val(newVal);
var imgCount = $("#hidd_imgCount").val();
$("#hidd_imgCount").val(imgCount - 1);
}
}
});
}
//当点击Submit引发回调,且并没有提交成功,引发回调时,重新载入上传UploadFiles部分
function reloadUpFiles() {
var hidd = $("#hidd_UploadFiles").val();
if (hidd != "") {
var arrayFiles = hidd.split('&');
$("#div_Result").html("");
for (var i = 0; i < arrayFiles.length; i++) {
if (arrayFiles[i].toString().length > 0) {
var aFile = arrayFiles[i].split('%');
var sysName = aFile[0].toString();
var showName = aFile[1].toString();
var divDocument = "<div id=\"" + sysName.substring(0, sysName.lastIndexOf('.') - 1) + "\" class=\"div_upfiles\">" + showName + " <a href=\"javascript:;\" onclick=\"delAttach('" + sysName + "','" + showName + "');\">删除</a>" + "</div>";
$("#div_Result").append(divDocument);
}
}
}
}
function getCookies() {
var cookies = document.cookie;
var innerText = cookies.substring(cookies.lastIndexOf('ImgResponse=') + 12, cookies.lastIndexOf('{1}'));
return innerText;
}
</script>CSS:
<style type="text/css">
.div_upfiles
{
background-image: url('images/img.jpg');
background-repeat: no-repeat;
height: 14px;
padding-left: 20px;
font: normal 12px Verdana;
padding-top: 1px;
margin-bottom: 5px;
color: #0A3761;
}
.btn_delete
{
border: solid 0px white;
background-color: White;
}
</style>
<style type="text/css">
.div_upfiles
{
background-image: url('images/img.jpg');
background-repeat: no-repeat;
height: 14px;
padding-left: 20px;
font: normal 12px Verdana;
padding-top: 1px;
margin-bottom: 5px;
color: #0A3761;
}
.btn_delete
{
border: solid 0px white;
background-color: White;
}
</style>
HTML代码:
<div id="loading" style="display: none;">
<img src="images/loading.gif"></div>
<div id="div_Result">
</div>
<input type="button" id="buttonUpload" value="上传" />
<span style="white-space:pre"> </span><asp:HiddenField ID="hidd_UploadFiles" runat="server" />
<asp:HiddenField ID="HiddenField1" runat="server" Value="0" />
<input id="hidd_imgCount" type="hidden" value="0" />
<div id="loading" style="display: none;">
<img src="images/loading.gif"></div>
<div id="div_Result">
</div>
<input type="button" id="buttonUpload" value="上传" />
<span style="white-space:pre"> </span><asp:HiddenField ID="hidd_UploadFiles" runat="server" />
<asp:HiddenField ID="HiddenField1" runat="server" Value="0" />
<input id="hidd_imgCount" type="hidden" value="0" />然后是两个异部提交的文件:
上传文件后台代码:
public class Handler2 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
System.Threading.Thread.Sleep(2000);
string oldName = context.Request.Files["userfile"].FileName;
string type = oldName.Substring(oldName.LastIndexOf('.'));
string Count = context.Request["Count"].ToString();
string strFileName = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Guid.NewGuid() + DateTime.Now.Ticks.ToString(), "MD5") + Count + type;
string strExtension = Path.GetExtension(context.Request.Files[0].FileName).ToLower();
string folder = context.Request["Folder"].ToString();
int bytes = context.Request.Files[0].ContentLength;
//如果,上传的文件大于4MB的话,抛消息出来
if (bytes > 4 * 1024 * 1024)
{
ResponseWriteEnd(context, "1");
}
string strLocation = string.Empty;
if (string.IsNullOrEmpty(folder))
{
strLocation = (context.Server.MapPath("uploadFiles") + ("//" + strFileName));
}
else
{
//判断 目录 是否存在。。不存在则创建
string path = context.Server.MapPath("uploadFiles/" + folder + "/");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
strLocation = path + ("//" + strFileName);
}
context.Request.Files[0].SaveAs(strLocation);
context.Response.ContentType = "text/plain";
string ResponseString = "0|" + strFileName + (!string.IsNullOrEmpty(folder) ? "|" + folder : "");
ResponseWriteEnd(context, ResponseString);
}
/// <summary>
/// 用于输出流,并终止流
/// </summary>
/// <param name="context">HttpContext</param>
/// <param name="msg">你输出流信息</param>
private void ResponseWriteEnd(HttpContext context, string msg)
{
context.Response.Write(msg);
context.Response.Cookies["ImgResponse"].Value = msg + "{1}";
context.Response.End();
}
public class Handler2 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
System.Threading.Thread.Sleep(2000);
string oldName = context.Request.Files["userfile"].FileName;
string type = oldName.Substring(oldName.LastIndexOf('.'));
string Count = context.Request["Count"].ToString();
string strFileName = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Guid.NewGuid() + DateTime.Now.Ticks.ToString(), "MD5") + Count + type;
string strExtension = Path.GetExtension(context.Request.Files[0].FileName).ToLower();
string folder = context.Request["Folder"].ToString();
int bytes = context.Request.Files[0].ContentLength;
//如果,上传的文件大于4MB的话,抛消息出来
if (bytes > 4 * 1024 * 1024)
{
ResponseWriteEnd(context, "1");
}
string strLocation = string.Empty;
if (string.IsNullOrEmpty(folder))
{
strLocation = (context.Server.MapPath("uploadFiles") + ("//" + strFileName));
}
else
{
//判断 目录 是否存在。。不存在则创建
string path = context.Server.MapPath("uploadFiles/" + folder + "/");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
strLocation = path + ("//" + strFileName);
}
context.Request.Files[0].SaveAs(strLocation);
context.Response.ContentType = "text/plain";
string ResponseString = "0|" + strFileName + (!string.IsNullOrEmpty(folder) ? "|" + folder : "");
ResponseWriteEnd(context, ResponseString);
}
/// <summary>
/// 用于输出流,并终止流
/// </summary>
/// <param name="context">HttpContext</param>
/// <param name="msg">你输出流信息</param>
private void ResponseWriteEnd(HttpContext context, string msg)
{
context.Response.Write(msg);
context.Response.Cookies["ImgResponse"].Value = msg + "{1}";
context.Response.End();
}
删除文件后台代码:
public class RemoveImage : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string parameters = context.Request.QueryString["ID"].ToString();
var ParamArray = parameters.Split('|');
string filename = ParamArray[0];
string Path = "";
string Folder = string.Empty;
if (ParamArray.Length > 1)
{
Folder = ParamArray[1]+ "/";
}
Path = context.Server.MapPath("uploadFiles/" + Folder + "" + filename);
if (File.Exists(Path))
{
File.Delete(Path);
ResponseWriteEnd(context, filename.Substring(0, filename.LastIndexOf('.') - 1));
}
else
{
ResponseWriteEnd(context, "false");
}
}
/// <summary>
/// 用于输出流,并终止流
/// </summary>
/// <param name="context">HttpContext</param>
/// <param name="msg">你输出流信息</param>
private void ResponseWriteEnd(HttpContext context, string msg)
{
context.Response.Write(msg);
context.Response.End();
}
public class RemoveImage : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string parameters = context.Request.QueryString["ID"].ToString();
var ParamArray = parameters.Split('|');
string filename = ParamArray[0];
string Path = "";
string Folder = string.Empty;
if (ParamArray.Length > 1)
{
Folder = ParamArray[1]+ "/";
}
Path = context.Server.MapPath("uploadFiles/" + Folder + "" + filename);
if (File.Exists(Path))
{
File.Delete(Path);
ResponseWriteEnd(context, filename.Substring(0, filename.LastIndexOf('.') - 1));
}
else
{
ResponseWriteEnd(context, "false");
}
}
/// <summary>
/// 用于输出流,并终止流
/// </summary>
/// <param name="context">HttpContext</param>
/// <param name="msg">你输出流信息</param>
private void ResponseWriteEnd(HttpContext context, string msg)
{
context.Response.Write(msg);
context.Response.End();
}
运行结果如下图:
如果需要源码的朋友可以到:http://www.2cto.com/uploadfile/2011/1227/20111227031233817.rar
进行下载
摘自 Silverlight4.0开发_Silverlight4.0学习_Silverlight4.0例子
相关新闻>>
- 发表评论
-
- 最新评论 更多>>