在新增数据项的时候,用ajax实现无刷新提交,但上传文件的时候,由于数据类型原因,不能将页面的<asp:FileUpload>中以字符串值的方式传到js里调用。我一共找到了两个方法予以解决,实现无刷新上传。

第一种方法:利用js的ADODB.Stream,将文件先转换成流,再通过js上传到服务器,这样有个好处就是可以上传超大文件,并且由于是数据流,可以支持断点续传、方便显示上传进度等人性化功能。唯一的缺点是要客户端浏览器需要设置安全级别,或者安装相关ActiveX控件(这个控件自己做的,加载到页面中)。

相关代码:
文件有:1个前台页面:upload.html、 1个js控制:upload.js、 1个后台处理页面:Accept.aspx(Accept.aspx.cs)
代码文件如下:
upload.html
view plaincopy to clipboardprint?
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<mce:script src="upload.js" mce_src="upload.js" language="jscript" type="text/jscript"></mce:script>
</head>
<body>
<form id="form1" runat="server">
<div style="width:100%">
<input type="file" id="hidFilePath" />
<input type="button" id="ok" onclick="BeginUpLoadFile('0', true)" title="上传" value="UpLoad"/>
</div>
<div id="lblLeavingsTime">TIME</div>
<div id="returnInfo">Info</div>
</form>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<mce:script src="upload.js" mce_src="upload.js" language="jscript" type="text/jscript"></mce:script>
</head>
<body>
<form id="form1" runat="server">
<div style="width:100%">
<input type="file" id="hidFilePath" />
<input type="button" id="ok" onclick="BeginUpLoadFile('0', true)" title="上传" value="UpLoad"/>
</div>
<div id="lblLeavingsTime">TIME</div>
<div id="returnInfo">Info</div>
</form>
</body>
</html>
upload.js
view plaincopy to clipboardprint?
var g_XMLHttp = null;

var g_Stream = new ActiveXObject('ADODB.Stream');

var g_SendCount = 0;
var g_TotalCount = 0;
var g_FileSize = 0;
var g_UpFileType = 0 ;
var g_BlockSize = 1024 * 100; //每段分为100K
var fileExtName = "" ; //文件后缀名
var g_PauseFlag = false;
var g_BeginTime = null;
var g_guageFlag = false ;

var Nfilename = "" ;

function Init()

{

InitTitleEvent();

BeginUpLoadFile();

}

function MoveGuage()
{
var t_Time = new Date();

var t_OddTime = Math.ceil((t_Time.getTime() - g_BeginTime.getTime()) / g_SendCount * (g_TotalCount - g_SendCount) / 1000);

var t_OddTimeString = '';

if(t_OddTime >= 3600)

{

t_OddTimeString = Math.floor(t_OddTime / 3600) + '时';

t_OddTime %= 3600;

}

if(t_OddTime >= 60)

{

t_OddTimeString += Math.floor(t_OddTime / 60) + '分';

t_OddTime %= 60;

}

document.all.lblLeavingsTime.innerText = t_OddTimeString + t_OddTime + '秒';

}

//第1个参数表示上传的类型,为命名新文件提供参考
//第2个参数表示要不要显示状态条
function BeginUpLoadFile(upFileType, guageFlag)
{
if(g_Stream == null)
{alert("您的机器不支持ADODB.Stream."); }
else
{
g_guageFlag = guageFlag ;
g_UpFileType = upFileType;
g_Stream.Type = 1;
g_Stream.Open();

var pth = document.getElementById("hidFilePath").value ;
g_Stream.LoadFromFile(pth);

var fname=pth.split('\\');
Nfilename = fname[fname.length-1] ;
fileExtName = Nfilename.split('.')[1].toLowerCase();

g_Stream.position = 0;

g_SendCount = 1;
g_FileSize = g_Stream.size ;

if (upFileType == 0) //上传图片
{
if (g_FileSize > 1024 * 1024 * 2 ) // 不能大于2M
{
document.all.returnInfo.innerText = "文件大小超过2M!" ;
g_PauseFlag = true;
return ;
}
var str = "bmp,jpg,jpeg,gif,png,icon";
if (str.search(fileExtName) == -1) //图片格式不能超出范围
{
document.all.returnInfo.innerText = "文件格式不正确,请选择bmp、jpg、jpeg、gif、png、icon格式图片!" ;
g_PauseFlag = true;
return ;
}
}

g_TotalCount = Math.ceil(g_Stream.size / g_BlockSize);
g_BeginTime = new Date();

SendData();
}

}

function SendData()

{

if(g_PauseFlag)
{
return;
}

if(g_SendCount <= g_TotalCount)
{
var t_XMLDOM = null;
var t_Root = null;
var t_Node = null;
var t_Attribute = null;
t_XMLDOM = new ActiveXObject('Microsoft.XMLDOM');
t_XMLDOM.async = false;
t_XMLDOM.resolveExternals = false;
t_Node = t_XMLDOM.createProcessingInstruction('xml','version="1.0"');
t_XMLDOM.appendChild(t_Node);
t_Root = t_XMLDOM.createElement('Root');
t_XMLDOM.appendChild(t_Root);
t_XMLDOM.documentElement.setAttribute('xmlns:dt','urn:schemas-microsoft-com:datatypes');
t_Node = t_XMLDOM.createElement('Data');
t_Node.dataType = 'bin.base64';
t_Node.nodeTypedValue = g_Stream.Read(g_BlockSize);

t_Attribute = t_XMLDOM.createAttribute('upfiletype');
t_Attribute.value = g_UpFileType;
t_Node.setAttributeNode(t_Attribute);

t_Attribute = t_XMLDOM.createAttribute('fileindex');
t_Attribute.value = g_SendCount;
t_Node.setAttributeNode(t_Attribute);

t_Attribute = t_XMLDOM.createAttribute('totalcount');
t_Attribute.value = g_TotalCount;
t_Node.setAttributeNode(t_Attribute);

t_Attribute = t_XMLDOM.createAttribute('filesize');
t_Attribute.value = g_FileSize;
t_Node.setAttributeNode(t_Attribute);

t_Attribute = t_XMLDOM.createAttribute('blocksize');
t_Attribute.value = g_BlockSize;
t_Node.setAttributeNode(t_Attribute);

t_Attribute = t_XMLDOM.createAttribute('fileextname');
t_Attribute.value = fileExtName;
t_Node.setAttributeNode(t_Attribute);

t_Root.appendChild(t_Node);

g_XMLHttp = new ActiveXObject('Microsoft.XMLHttp');
g_XMLHttp.open('POST','AcceptFile.aspx',true);
g_XMLHttp.onreadystatechange = XMLHttpStateChange;
g_XMLHttp.send(t_XMLDOM);

if (g_guageFlag){ MoveGuage(); }
}

else

{
var xx = spider.BookFile.FileObj.getFileName() ;
alert(xx.value) ;

document.all.lblLeavingsTime.innerText = '0秒';

CloseWindow(document.all.cmdClose);
document.all.returnInfo.innerText = '文件上传完成!';
}

}

function XMLHttpStateChange()
{
if(g_XMLHttp.readyState == 4)
{
var rstr = g_XMLHttp.responseText ;

if(rstr == 'OK')
{
g_SendCount++;
SendData();
}
else
{
document.all.returnInfo.innerText = rstr;
CloseWindow(document.all.cmdClose);
}
}

}

function CloseWindow(p_OBJ)

{

g_PauseFlag = true;

g_Stream.Close();

}
var g_XMLHttp = null;

var g_Stream = new ActiveXObject('ADODB.Stream');

var g_SendCount = 0;
var g_TotalCount = 0;
var g_FileSize = 0;
var g_UpFileType = 0 ;
var g_BlockSize = 1024 * 100; //每段分为100K
var fileExtName = "" ; //文件后缀名
var g_PauseFlag = false;
var g_BeginTime = null;
var g_guageFlag = false ;

var Nfilename = "" ;

function Init()

{

InitTitleEvent();

BeginUpLoadFile();

}

function MoveGuage()
{
var t_Time = new Date();

var t_OddTime = Math.ceil((t_Time.getTime() - g_BeginTime.getTime()) / g_SendCount * (g_TotalCount - g_SendCount) / 1000);

var t_OddTimeString = '';

if(t_OddTime >= 3600)

{

t_OddTimeString = Math.floor(t_OddTime / 3600) + '时';

t_OddTime %= 3600;

}

if(t_OddTime >= 60)

{

t_OddTimeString += Math.floor(t_OddTime / 60) + '分';

t_OddTime %= 60;

}

document.all.lblLeavingsTime.innerText = t_OddTimeString + t_OddTime + '秒';

}

//第1个参数表示上传的类型,为命名新文件提供参考
//第2个参数表示要不要显示状态条
function BeginUpLoadFile(upFileType, guageFlag)
{
if(g_Stream == null)
{alert("您的机器不支持ADODB.Stream."); }
else
{
g_guageFlag = guageFlag ;
g_UpFileType = upFileType;
g_Stream.Type = 1;
g_Stream.Open();

var pth = document.getElementById("hidFilePath").value ;
g_Stream.LoadFromFile(pth);

var fname=pth.split('\\');
Nfilename = fname[fname.length-1] ;
fileExtName = Nfilename.split('.')[1].toLowerCase();

g_Stream.position = 0;

g_SendCount = 1;
g_FileSize = g_Stream.size ;

if (upFileType == 0) //上传图片
{
if (g_FileSize > 1024 * 1024 * 2 ) // 不能大于2M
{
document.all.returnInfo.innerText = "文件大小超过2M!" ;
g_PauseFlag = true;
return ;
}
var str = "bmp,jpg,jpeg,gif,png,icon";
if (str.search(fileExtName) == -1) //图片格式不能超出范围
{
document.all.returnInfo.innerText = "文件格式不正确,请选择bmp、jpg、jpeg、gif、png、icon格式图片!" ;
g_PauseFlag = true;
return ;
}
}

g_TotalCount = Math.ceil(g_Stream.size / g_BlockSize);
g_BeginTime = new Date();

SendData();
}

}

function SendData()

{

if(g_PauseFlag)
{
return;
}

if(g_SendCount <= g_TotalCount)
{
var t_XMLDOM = null;
var t_Root = null;
var t_Node = null;
var t_Attribute = null;
t_XMLDOM = new ActiveXObject('Microsoft.XMLDOM');
t_XMLDOM.async = false;
t_XMLDOM.resolveExternals = false;
t_Node = t_XMLDOM.createProcessingInstruction('xml','version="1.0"');
t_XMLDOM.appendChild(t_Node);
t_Root = t_XMLDOM.createElement('Root');
t_XMLDOM.appendChild(t_Root);
t_XMLDOM.documentElement.setAttribute('xmlns:dt','urn:schemas-microsoft-com:datatypes');
t_Node = t_XMLDOM.createElement('Data');
t_Node.dataType = 'bin.base64';
t_Node.nodeTypedValue = g_Stream.Read(g_BlockSize);

t_Attribute = t_XMLDOM.createAttribute('upfiletype');
t_Attribute.value = g_UpFileType;
t_Node.setAttributeNode(t_Attribute);

t_Attribute = t_XMLDOM.createAttribute('fileindex');
t_Attribute.value = g_SendCount;
t_Node.setAttributeNode(t_Attribute);

t_Attribute = t_XMLDOM.createAttribute('totalcount');
t_Attribute.value = g_TotalCount;
t_Node.setAttributeNode(t_Attribute);

t_Attribute = t_XMLDOM.createAttribute('filesize');
t_Attribute.value = g_FileSize;
t_Node.setAttributeNode(t_Attribute);

t_Attribute = t_XMLDOM.createAttribute('blocksize');
t_Attribute.value = g_BlockSize;
t_Node.setAttributeNode(t_Attribute);

t_Attribute = t_XMLDOM.createAttribute('fileextname');
t_Attribute.value = fileExtName;
t_Node.setAttributeNode(t_Attribute);

t_Root.appendChild(t_Node);

g_XMLHttp = new ActiveXObject('Microsoft.XMLHttp');
g_XMLHttp.open('POST','AcceptFile.aspx',true);
g_XMLHttp.onreadystatechange = XMLHttpStateChange;
g_XMLHttp.send(t_XMLDOM);

if (g_guageFlag){ MoveGuage(); }
}

else

{
var xx = spider.BookFile.FileObj.getFileName() ;
alert(xx.value) ;

document.all.lblLeavingsTime.innerText = '0秒';

CloseWindow(document.all.cmdClose);
document.all.returnInfo.innerText = '文件上传完成!';
}

}

function XMLHttpStateChange()
{
if(g_XMLHttp.readyState == 4)
{
var rstr = g_XMLHttp.responseText ;

if(rstr == 'OK')
{
g_SendCount++;
SendData();
}
else
{
document.all.returnInfo.innerText = rstr;
CloseWindow(document.all.cmdClose);
}
}

}

function CloseWindow(p_OBJ)

{

g_PauseFlag = true;

g_Stream.Close();

}

Accept.aspx
view plaincopy to clipboardprint?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AcceptFile.aspx.cs" Inherits="commonJS_AcceptFile" %>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AcceptFile.aspx.cs" Inherits="commonJS_AcceptFile" %>

Accept.aspx.cs
view plaincopy to clipboardprint?
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.IO;
using spider.BookFile; //这是自己写的文件类

public partial class commonJS_AcceptFile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(FileObj));

XmlDocument t_XmlDocument = new XmlDocument();

t_XmlDocument.Load(this.Request.InputStream);

XmlNode t_XmlNode = t_XmlDocument.SelectSingleNode("Root/Data");

FileObj t_FileOBJ = new FileObj();

string t_upfiletype = t_XmlNode.Attributes["upfiletype"].Value;
string t_FileIndex = t_XmlNode.Attributes["fileindex"].Value;
string t_totalcount = t_XmlNode.Attributes["totalcount"].Value;
string t_filesize = t_XmlNode.Attributes["filesize"].Value;
string t_blocksize = t_XmlNode.Attributes["blocksize"].Value;
string t_fileextname = t_XmlNode.Attributes["fileextname"].Value;
byte[] t_File = Convert.FromBase64String(t_XmlNode.FirstChild.Value);

FileObj.upfile myUpFile = new FileObj.upfile();
myUpFile.FileCount = t_totalcount;
myUpFile.FileIndex = t_FileIndex;
myUpFile.UpFileType = t_upfiletype;
myUpFile.FileSize = t_filesize;
myUpFile.BlockSize = t_blocksize;
myUpFile.ExtName = t_fileextname;

myUpFile.t_File = t_File;

FileObj.InsertFileList(myUpFile);

if (FileObj.getErrMsg == "")
{
this.Response.Write("OK");
}
else
{
this.Response.Write(FileObj.getErrMsg);
}

}
}
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml;
using System.IO;
using spider.BookFile; //这是自己写的文件类

public partial class commonJS_AcceptFile : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(FileObj));

XmlDocument t_XmlDocument = new XmlDocument();

t_XmlDocument.Load(this.Request.InputStream);

XmlNode t_XmlNode = t_XmlDocument.SelectSingleNode("Root/Data");

FileObj t_FileOBJ = new FileObj();

string t_upfiletype = t_XmlNode.Attributes["upfiletype"].Value;
string t_FileIndex = t_XmlNode.Attributes["fileindex"].Value;
string t_totalcount = t_XmlNode.Attributes["totalcount"].Value;
string t_filesize = t_XmlNode.Attributes["filesize"].Value;
string t_blocksize = t_XmlNode.Attributes["blocksize"].Value;
string t_fileextname = t_XmlNode.Attributes["fileextname"].Value;
byte[] t_File = Convert.FromBase64String(t_XmlNode.FirstChild.Value);

FileObj.upfile myUpFile = new FileObj.upfile();
myUpFile.FileCount = t_totalcount;
myUpFile.FileIndex = t_FileIndex;
myUpFile.UpFileType = t_upfiletype;
myUpFile.FileSize = t_filesize;
myUpFile.BlockSize = t_blocksize;
myUpFile.ExtName = t_fileextname;

myUpFile.t_File = t_File;

FileObj.InsertFileList(myUpFile);

if (FileObj.getErrMsg == "")
{
this.Response.Write("OK");
}
else
{
this.Response.Write(FileObj.getErrMsg);
}

}
}

第二种方法:用js动态创建form和iframe上传文件,实现无刷新。优点是代码量小,无需客户端安装控件,缺点就是上传有限制大小,下面看代码:
需要文件有:1个前台页面upload.html、 1个js函数 function upFile、 1个处理文件accept.aspx(accept.aspx.cs)
upload.html
view plaincopy to clipboardprint?
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<mce:script src="upload.js" mce_src="upload.js" language="jscript" type="text/jscript"></mce:script>
</head>
<body>
<form id="form1" runat="server">
<div style="width:100%">
<iframe name='hidden_frame' id="hidden_frame" style='width:150px; height:50px; display:none;'> </iframe>
<input type="file" id="hidFilePath" />
<input id="upBtn" type="button" class="clearBtn" style="display:none;" value="上传图片" onclick="upFile('hidFilePath');" />
</div>
</form>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<mce:script src="upload.js" mce_src="upload.js" language="jscript" type="text/jscript"></mce:script>
</head>
<body>
<form id="form1" runat="server">
<div style="width:100%">
<iframe name='hidden_frame' id="hidden_frame" style='width:150px; height:50px; display:none;'> </iframe>
<input type="file" id="hidFilePath" />
<input id="upBtn" type="button" class="clearBtn" style="display:none;" value="上传图片" onclick="upFile('hidFilePath');" />
</div>
</form>
</body>
</html>

function upFile
view plaincopy to clipboardprint?
function upFile(ob)
{
var file = document.getElementById(ob) ;
var newName = "FileName"; //设置文件保存的名字

var form=document.createElement('form');
document.body.appendChild(form);
form.encoding="multipart/form-data";
form.method = "post";
form.action= "accept.aspx?nm=" + newName;
form.target= "hidden_frame";
var pos=file.nextSibling; //记住file在旧表单中的的位置
form.appendChild(file);
form.submit();
pos.parentNode.insertBefore(file,pos);
document.body.removeChild(form);
}
function upFile(ob)
{
var file = document.getElementById(ob) ;
var newName = "FileName"; //设置文件保存的名字

var form=document.createElement('form');
document.body.appendChild(form);
form.encoding="multipart/form-data";
form.method = "post";
form.action= "accept.aspx?nm=" + newName;
form.target= "hidden_frame";
var pos=file.nextSibling; //记住file在旧表单中的的位置
form.appendChild(file);
form.submit();
pos.parentNode.insertBefore(file,pos);
document.body.removeChild(form);
}

accept.aspx
view plaincopy to clipboardprint?
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="up.aspx.cs" Inherits="Member_up" %>
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="up.aspx.cs" Inherits="Member_up" %>

accept.aspx.cs
view plaincopy to clipboardprint?
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Member_up : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string mz = HttpContext.Current.Request.QueryString["nm"].ToString();
string uperr = "";
HttpFileCollection files = HttpContext.Current.Request.Files;

if (files.Count>0)
{ uperr = upSingleFile(files[0], mz); }
else { uperr = "ok"; }
HttpContext.Current.Session["upInfo"] = uperr;
Response.Write(uperr);
}

//上传文件
private string upSingleFile(HttpPostedFile file, String theFileName)
{
string infos = "";
bool fileOK = false;

string fileName, fileExtension ;
fileName = System.IO.Path.GetFileName(file.FileName);
if (fileName != "")
{
if (file.ContentLength >= 1024 * 1024 * 2)
{
infos = "上传文件太大,目前仅支持2M以内的图片上传!";
}
else
{
fileExtension = System.IO.Path.GetExtension(fileName).ToLower();
String[] allowedExtensions = { ".jpg", ".jpeg", ".gif", ".bmp", ".png", ".icon" };
for (int i = 0; i < allowedExtensions.Length; i++)
{
if (fileExtension == allowedExtensions[i])
{
fileOK = true;
break;
}
}
if (!fileOK)
{
infos = "不支持上传此类型文件!目前支持的图片格式有:jpg|jpeg|gif|bmp|png|icon";
}
else
{
file.SaveAs(System.Web.HttpContext.Current.Request.MapPath("~/books/BookPic/") + theFileName);
infos = "ok" + theFileName;
}
}
}
else
{
infos = "没有读取到文件!";
}
return infos;
}
}

js实现无刷新上传的更多相关文章

  1. SpringMVC结合ajaxfileupload.js实现文件无刷新上传

    直接看代码吧,注释都在里面 首先是web.xml <?xml version="1.0" encoding="UTF-8"?> <web-ap ...

  2. [Asp.net mvc]jquery.form.js无刷新上传

    写在前面 最近在自己的网盘项目中想用ajax.beginform的方式做无刷新的操作,提交表单什么的都可以,但针对文件上传,就是个鸡肋.在网上查找了发现很多人都遇到了这个问题,大部分都推荐使用jque ...

  3. ajaxfileupload.js插件结合一般处理文件实现Ajax无刷新上传

    先上几张图更直观展示一下要实现的功能.本功能主要通过Jquery ajaxfileupload.js插件结合ajaxUpFile.ashx一般应用程序处理文件实现Ajax无刷新上传功能,结合NPOI2 ...

  4. Jquery ajaxfileupload.js结合.ashx文件实现无刷新上传

    先上几张图更直观展示一下要实现的功能,本功能主要通过Jquery ajaxfileupload.js插件结合ajaxUpFile.ashx一般应用程序处理文件实现Ajax无刷新上传功能,结合NPOI2 ...

  5. jQuery AJAX 网页无刷新上传示例

    新年礼,提供简单.易套用的 jQuery AJAX 上传示例及代码下载.后台对文件的上传及检查,以 C#/.NET Handler 处理 (可视需要改写成 Java 或 PHP). 有时做一个网站项目 ...

  6. 移动端图片上传解决方案localResizeIMG先压缩后ajax无刷新上传

    现在科技太发达,移动设备像素越来越高,随便一张照片2M+,但是要做移动端图片上传和pc上略有不同,移动端你不能去限制图片大小,让用户先处理图片再上传,这样不现实.所以理解的解决方案就是在上传先进行图片 ...

  7. ASP.NET MVC使用jQuery无刷新上传

    昨晚网友有下载了一个jQuery无刷新上传的小功能,他尝试搬至ASP.NET MVC应用程序中去,在上传死活无效果.Insus.NET使用Teamviewer远程桌面,操作一下,果真是有问题.网友是说 ...

  8. 基于h5的图片无刷新上传(uploadifive)

    基于h5的图片无刷新上传(uploadifive) uploadifive简介 了解uploadify之前,首先了解来一下什么是uploadify,uploadfy官网,uploadify和uploa ...

  9. 文件无刷新上传(swfUpload与uploadify)

    文件无刷新上传并获取保存到服务器端的路径 遇到上传文件的问题,结合之前用到过的swfUpload,又找了一个无刷新上传文件的jquery插件uploadify,写篇博客记录一下分别介绍这两个插件的实现 ...

随机推荐

  1. rabbitmq_学习_00_资源帖

    一.精选资料 二.参考资料 1.RabbitMQ Simplest Queue 2.RabbitMQ系列教程 2.RabbitMQ入门教程 For Java[1] - Hello World 2.Ra ...

  2. 条款52:谢了placement new 也就同时应该写一个placement delete

    如果operator new接收到的参数除了size_t之外还有其他的话,那么这个operator new实际上就是一个placement new,所以考虑下下面这样的情况: 一个可以用来记录信息的p ...

  3. hdoj-1046-Gridland(规律题)

    题目链接 #include <algorithm> #include <iostream> using namespace std; int main() { int t; c ...

  4. New Concept English three (49)

    31w/m 51error It is a good thing my aunt Harriet died years ago. If she were alive today she would n ...

  5. New Concept English three (58)

    30w/m 76 errors The old lady was glad to be back at the block of flats where she lived. Her shopping ...

  6. Project://STARK

    数据添加&编辑 删除&分页 搜索框功能 action批量操作 filter多条件过滤 pop_up弹窗

  7. Office 2007在安装过程中出错

    1, 可能是因为c:\program files\common files\microsoft Shared\web server Extensions\40\bin目录下缺少Fp4autl.dll, ...

  8. HDU3577Fast Arrangement(线段树+lazy)

    Problem Description Chinese always have the railway tickets problem because of its' huge amount of p ...

  9. bzoj 3709: [PA2014]Bohater 贪心

    题目: 在一款电脑游戏中,你需要打败\(n\)只怪物(从\(1\)到\(n\)编号).为了打败第\(i\)只怪物,你需要消耗\(d_i\)点生命值,但怪物死后会掉落血药,使你恢复\(a_i\)点生命值 ...

  10. python之 前端HTML/CSS基础知识学习笔记

    1. 文件结构: HTML文件的固定结构: <html> <head>...</head> <body>...</body> </ht ...