zoukankan      html  css  js  c++  java
  • mvc实现生成二维码

    第一步

    下载 ThoughtWorks.QRCode.dll 文件  (需引用该文件)

    第二步

    添加一个辅助类

    public class QrCodeHelper
    {
    #region 保存图片
    /// <summary>
    /// 保存图片
    /// </summary>
    /// <param name="strPath">保存路径</param>
    /// <param name="img">图片</param>
    /// <returns>图片路径</returns>
    public static string SaveImg(string strPath, Bitmap img)
    {
    //保存图片到目录
    if (Directory.Exists(strPath))
    {
    //文件名称
    string guid = Guid.NewGuid().ToString().Replace("-", "") + ".png";
    img.Save(strPath + "/" + guid, System.Drawing.Imaging.ImageFormat.Png);
    return (guid);
    }
    else
    {
    //当前目录不存在,则创建
    Directory.CreateDirectory(strPath);
    return "";
    }
    }
    #endregion

    #region 生成二维码图片
    /// <summary>
    /// 生成二维码图片
    /// </summary>
    /// <param name="codeNumber">要生成二维码的字符串</param>
    /// <param name="size">大小尺寸</param>
    /// <returns>二维码图片</returns>
    public static Bitmap Create_ImgCode(string codeNumber, int size)
    {
    //创建二维码生成类
    QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
    //设置编码模式
    qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
    //设置编码测量度
    qrCodeEncoder.QRCodeScale = size;
    //设置编码版本
    qrCodeEncoder.QRCodeVersion = 0;
    //设置编码错误纠正
    qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
    //生成二维码图片
    System.Drawing.Bitmap image = qrCodeEncoder.Encode(codeNumber);
    return image;
    }
    #endregion

    #region 打开指定目录
    /// <summary>
    /// 打开指定目录
    /// </summary>
    /// <param name="path"></param>
    public static void Open_File(string path)
    {
    System.Diagnostics.Process.Start("explorer.exe", path);
    }
    #endregion

    #region 删除目录下所有文件
    /// <summary>
    /// 删除目录下所有文件
    /// </summary>
    /// <param name="aimPath">路径</param>
    public static void DeleteDir(string aimPath)
    {
    try
    {
    //目录是否存在
    if (Directory.Exists(aimPath))
    {
    // 检查目标目录是否以目录分割字符结束如果不是则添加之
    if (aimPath[aimPath.Length - 1] != Path.DirectorySeparatorChar)
    aimPath += Path.DirectorySeparatorChar;
    // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
    // 如果你指向Delete目标文件下面的文件而不包含目录请使用下面的方法
    string[] fileList = Directory.GetFiles(aimPath);
    //string[] fileList = Directory.GetFileSystemEntries(aimPath);
    // 遍历所有的文件和目录
    foreach (string file in fileList)
    {
    // 先当作目录处理如果存在这个目录就递归Delete该目录下面的文件
    if (Directory.Exists(file))
    {
    DeleteDir(aimPath + Path.GetFileName(file));
    }
    // 否则直接Delete文件
    else
    {
    File.Delete(aimPath + Path.GetFileName(file));
    }
    }
    }
    }
    catch (Exception e)
    {
    throw e;
    }
    }
    #endregion
    }

    第三步

    控制器方法

    /// 生成二维码
    /// </summary>
    /// <returns></returns>
    [HttpGet]
    public ActionResult CreateQRcode()
    {
    return View();
    }

    [HttpPost]
    public ActionResult CreateQRcode(string content)
    {
    string currentPath = Server.MapPath("~/.") + @"ContentOwnBarCode_Images";//二维码图片存放的路径
    Bitmap bs = QrCodeHelper.Create_ImgCode(content, 8);//创建二维码图片
    string imgUrl = QrCodeHelper.SaveImg(currentPath, bs);//保存图片
    ViewBag.ImgUrl = @"/Content/Own/BarCode_Images" + @"/" + imgUrl;//将路径返回到前台引用
    return View();
    }

    第四步

    视图代码

    <h2>创建二维码</h2>
    <form id="form1" action="/Default/CreateQRcode" method="post">
    <div>
    请输入内容:<input type="text" name="content" />
    <br />
    <input id="Button1" value="生成二维码" type="submit" />
    </div>
    <div>
    @if (ViewBag.ImgUrl != null)
    {
    <img src="@ViewBag.ImgUrl" />
    }
    </div>
    </form>

    亲测,可执行

  • 相关阅读:
    CSZ CMS 1.2.7 xss分析与复现
    蚁剑改造过WAF系列(一)
    代理池
    二维码劫持案例分析
    入门KKCMS代码审计
    Xposed+XServer无需脱壳抓取加密包
    通达OA前台任意用户登录分析
    ATutor学习内容管理系统任意文件上传漏洞(CVE-2019-12169)分析
    调试System.AggregateException-即使在异步代码中也是如此
    关于System.Exception
  • 原文地址:https://www.cnblogs.com/Ai-Dou/p/13364429.html
Copyright © 2011-2022 走看看