主要代码如下:
#region 生成二维码
/// <summary>
/// 生成电子运单二维码
/// </summary>
/// <param name="objVehicleannualinspapply"></param>
/// <returns></returns>
private string GetPicBarcodeUrl(string strUrl)
{
ServerInfo objServer = Utils.GetServerInfo(SysConfig.ServerId);
string strBarcode = strurl;//二维码所包含的Url地址信息
DotNetBarcode bc = new DotNetBarcode();
bc.Type = DotNetBarcode.Types.QRCode;
bc.PrintCheckDigitChar = true;
string strAll = Server.MapPath("../../TemplateBarcode/"); //所有二维码存放地址
string str = strAll + DateTime.Now.ToString("yyyyMMdd"); //新二维码存放地址
System.IO.Directory.CreateDirectory(str); //创建此文件夹
string strPicFileName = "test.jpg"; //二维码图片名称
string strPicPath = str + "/" + strPicFileName;
if (File.Exists(strPicPath))
{
File.Delete(strPicPath);
}
bc.Save(strBarcode, strPicPath, 300, 300);//保存二维码
DeleteFolder(strAll);//删除文件夹中除了今天以外的所有文件夹
return "TemplateBarcode/" + DateTime.Now.ToString("yyyyMMdd") + "/" + strPicFileName + "?date=" + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString(); //返回二维码存放路径
}
/// <summary>
/// 删除文件夹
/// 用法: DeleteFolder(@"c:\\1");
/// </summary>
/// <param name="dir"></param>
private static void DeleteFolder(string dir)
{
// 循环文件夹里面的内容
foreach (string f in Directory.GetFileSystemEntries(dir))
{
// 如果是文件存在
if (File.Exists(f))
{
FileInfo fi = new FileInfo(f);
if (fi.Attributes.ToString().IndexOf("Readonly") != 1)
{
fi.Attributes = FileAttributes.Normal;
}
// 直接删除其中的文件
File.Delete(f);
}
else
{
if (f != dir + DateTime.Now.ToString("yyyyMMdd"))
{
// 如果是文件夹存在
// 递归删除子文件夹
DeleteFolder(f);
Directory.Delete(f);
}
}
}
}
#endregion 生成二维码
另一种方法:
http://blog.csdn.net/lybwwp/article/details/18444369