C#二维码条码生成存入文本加缓存
这是Model层
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Book.Models
{
public class BookModel
{
public Guid BookId { get; set; }
public string BookName { get; set; }
public string BookISBN { get; set; }
public string BookMa { get; set; }
public string ErMa { get; set; }
public DateTime BookTime { get; set; }
}
}
这是分页类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Book.Models
{
/// <summary>
/// 分页类
/// </summary>
public class Pager
{
public int count { get; set; }
public List<BookModel> list { get; set; }
}
}
这是控制器
需要拉缓存helper
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Newtonsoft.Json;
using Spire.Barcode;
using System.Drawing;
using ThoughtWorks.QRCode.Codec;
namespace Book.Controllers
{
public class KZQController : Controller
{
// GET: KZQ
public ActionResult Index()
{
return View();
}
List<Models.BookModel> mjihe = new List<Models.BookModel>();//定义一个存放model信息的空集合
/// <summary>
/// 添加方法
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
public int BookAdd(Models.BookModel m)
{
try
{
m.BookId = Guid.NewGuid();//添加唯一标识符
mjihe.Add(m);//将book信息添加到集合
List<Models.BookModel> huanjihe = CacheHelper.GetCache("Key") as List<Models.BookModel>;//定义一个存cache集合
if (huanjihe != null)
{
mjihe.AddRange(huanjihe);//将缓集合中的数据填到model集合中去,
}
CacheHelper.SetCache("Key", mjihe, TimeSpan.FromMinutes(5));//每隔5分钟缓存集合里的数据就会被实体集合中的数据覆盖清除
var path = Server.MapPath("\\BookTxt\\"); //定义文件夹
if (!Directory.Exists(path))//判断是否不存在此文件夹
{
Directory.CreateDirectory(path);//如果不存在则创建
}
//FileMode主要是查找Book.text文件尾或者创建Book.text
using (FileStream filewrite = new FileStream(path + "Book.txt", FileMode.Append, FileAccess.Write))
{
using (StreamWriter read = new StreamWriter(filewrite))//读文件流
{
read.Write(JsonConvert.SerializeObject(m) + ",");//将读到的文件流转化字符串写入
}
}
return 1;
}
catch (Exception)
{
return 0;
}
}
/// <summary>
/// 生成条形码
/// </summary>
/// <param name="content"></param>
/// <returns></returns>
public JsonResult GenerateBarCodeBySpire(string content)
{
//创建BarcodeSettings对象
BarcodeSettings settings = new BarcodeSettings();
// 设置条形码类型为EAN - 13
settings.Type = BarCodeType.EAN13;
//设置条形码数据
settings.Data = content;
//使用校检和
settings.UseChecksum = CheckSumMode.ForceEnable;
//在底部显示条形码数据
settings.ShowTextOnBottom = true;
//设置宽度
settings.X = 1f;
//初始化BarCodeGenerator对象, 传入以上设置
BarCodeGenerator generator = new BarCodeGenerator(settings);
//创建条形码图片并保存为PNG格式
Image image = generator.GenerateImage();
var path = Server.MapPath("\\Ma\\");//相对路径
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
string guid = Guid.NewGuid().ToString().Replace("-", "") + ".png"; //图片名称
image.Save(path + guid);
return Json("/Ma/" + guid);
//string filePath = @"D:\Image\" + guid; //图片保存地址,需要绝对路径
//image.Save(filePath, System.Drawing.Imaging.ImageFormat.Png);
}
/// <summary>
/// 生成二维码图片
/// </summary>
/// <param name="content"></param>
/// <returns></returns>
public JsonResult CreateImage(string content)
{
string guid = Guid.NewGuid().ToString().Replace("-", "") + ".png"; //图片名称
int size = 10; //二维码中每个小点的大小
Bitmap image = CreateImgCode(content, size); //生成二维码图片
//保存图片,需要图片的绝对地址,这是web项目
var path = Server.MapPath("\\ERMa\\");//相对路径
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
image.Save(path+guid);
return Json("/ERMa/"+guid);
}
/// <summary>
/// 生成二维码图片
/// </summary>
/// <param name="codeNumber">要生成二维码的字符串</param>
/// <param name="size">二维码每个颗粒大小尺寸</param>
/// <returns>二维码图片</returns>
public Bitmap CreateImgCode(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;
}
public ActionResult Show()
{
return View();
}
int i = 0;
/// <summary>
/// 分页展示
/// </summary>
/// <returns></returns>
[HttpGet]
public string BookShow(int PageIndex,int PageSize)
{
List<Models.BookModel> huanlist = CacheHelper.GetCache("Key") as List<Models.BookModel>;//将Key cache中的数据赋给集合
List<Models.BookModel> list = null;//用来存放文本中的信息
if (i == 0 )
{
var path = Server.MapPath("\\BookTxt\\");//获取到文本目录路径
using (StreamReader read = new StreamReader(path + "Book.txt"))//读取文件流
{
string str = "[" + read.ReadToEnd().ToString().TrimEnd(',') + "]";//读取流中数据
list = JsonConvert.DeserializeObject<List<Models.BookModel>>(str);
//string json = JsonConvert.SerializeObject(list);
//return json;
}
i++;
}
else
{
list = huanlist;//将缓存集合中获取到的数据放入文本集合
}
Models.Pager m = new Models.Pager();
m.list = list.Skip((PageIndex-1)*PageSize).Take(PageSize).ToList();//分页
m.count = list.Count();
string json = JsonConvert.SerializeObject(m);
return json;
}
}
}
这是添加页面
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>BookAdd</title>
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script>
function fh()
{
location.href = "/KZQ/Show";
}
</script>
</head>
<body>
<div>
<input type="button" οnclick="fh()" name="name" value="返回" />
</div>
<div>
<table>
<tr>
<td>书名:</td>
<td><input type="text" id="BookName" value="" /></td>
</tr>
<tr>
<td>ISBN码:</td>
<td><input type="text" id="BookISBN" value="" /></td>
</tr>
<tr>
<td><input type="button" οnclick="sc()" name="name" value="生成条形码" /></td>
<td id="ma"></td>
</tr>
<tr>
<td><input type="text" id="MaPath" value="" /></td>
<td><input type="text" id="ERMaPath" value="" /></td>
</tr>
<tr>
<td>添加时间:</td>
<td><input type="date" id="BookTime" value="" /></td>
</tr>
<tr>
<td><input type="button" οnclick="add()" name="name" value="添加" /></td>
</tr>
</table>
</div>
</body>
</html>
这是展示页面
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Show</title>
<script src="~/Scripts/jquery-1.10.2.js"></script>
<link href="~/Content/bootstrap.css" rel="stylesheet" />
<script>
function fh()
{
location.href = "/KZQ/Index";
}
</script>
</head>
<body>
<div>
<input type="button" name="name" οnclick="fh()" value="返回添加" />
</div>
<div id="table">
</div>
<nav>
<div id="ye">
</div>
</nav>
</body>
</html>
C#二维码条码生成存入文本加缓存相关推荐
- 一维码和二维码的生成与解析
转载至https://blog.csdn.net/weixin_38902950/article/details/86771397 注意: 1.Zxing生成的条形码下边没有数字,barcode4j有 ...
- 二维码批量生成下载工具
二维码批量生成下载工具 https://tooltt.com/qrcode-batch/ 通过文本列表批量生成二维码,支持打包下载,方便快捷 https://tooltt.com/qrcode-bat ...
- .net core 的图片处理及二维码的生成及解析
写代码这事,掐指算来已经十有余年. 从html到css到javascript到vbscript到c#,从兴趣到职业,生活总是失落与惊喜并存. 绝大部分时候,出发并不是因为知道该到哪里去,只是知道不能再 ...
- 微信公众号二维码怎么生成?好用的生成方法介绍
微信公众号二维码怎么生成?从事新媒体行业的小伙伴们应该都对微信公众号不陌生吧,公众号是一个企业对外宣传的重要方式之一.通常情况下我们都会将公众号的二维码放置在文章的文末.以便于读者扫码关注公众号.那么 ...
- 二维码的生成原理是什么
二维码是一种用来表示文本或者网址的图像,它通常是一个黑白相间的方块组成的图案.二维码的生成原理是将文本或者网址先编码成一个二进制数据流,然后在图像中用不同的黑白色块来表示这些二进制数据.在生成二维码时 ...
- 二维码的生成和解析原理
二维码结构 1.版本信息:version1(21*21),version2,...,version40,一共40个版本.版本代表每行有多少模块,每一个版本比前一个版本增加4个码元,计算公式为(n-1) ...
- iOS开发 - 二维码的生成与读取
二维码的生成 从iOS7開始集成了二维码的生成和读取功能 此前被广泛使用的zbarsdk眼下不支持64位处理器 生成二维码的步骤: 导入CoreImage框架 通过滤镜CIFilter生成二维码 二维 ...
- [日推荐]『草料二维码』免费二维码在线生成工具
二维码又称QR Code,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型.人们可以把名片.邮件.网址.电话号码.等信息生成对应的二 ...
- H5二维码海报生成保存相关问题记录
H5二维码海报生成保存相关问题记录 最近在开发H5页面中遇到二维码生成保存并下载到系统相册中的问题.问题大致分为:生成海报不全,未按照H5页面的显示进行海报保存,图片模糊等相关问题. 使用技术:qrc ...
最新文章
- cocos2d-x的未来展望
- 从零开始学习jQuery (八) 插播:jQuery实施方案
- 从网页(WEB)登录SAP
- 思科发布全新Catalyst 2960-L系列交换机
- WCF读书笔记(1)
- HTML学习总结(2)——标题/水平线/注释/段落/折行/文本格式化
- 刚接触mybatis,很容易分不清#{id}和#{param1}的使用情况,本篇文章详解了两者的作用以及使用情况
- 驰为vi10旗舰版linux,驰为Vi10平板电脑完全安装Win10步骤 BY Chinasred
- python去掉停用词_Python - 删除停用词
- 清理windows10系统垃圾文件-bat批处理命令
- 最新Everest 企业版(AIDA64)使用SQL保存数据的方法介绍
- 第六章 自然的数学化和分析化
- ANSYS APDL学习(12):如何将ansys求解后的数据(点位移/应力/应变等)导出到txt文件
- java登陆界面_【java中实现登录界面功能】
- POJ1008:玛雅日历
- 基于web的木子日记个人博客网站的设计与实现
- 页眉怎么添加【节】,设置不同章节不同页眉
- omnet++,veins,sumo使用多应用层实现车辆和行人的模拟
- 【Linux脚本-sed命令在文本首行和尾行插入空行】
- VB.NET 入门教程
热门文章
- 君子慎独,卑以自牧!
- 微信小程序开发笔记 进阶篇④——基于iconfont快速实现icon图标显示
- 软件工程师眼睛疲劳咋办啊_如何避免计算机眼睛疲劳并保持眼睛健康
- word题注编号格式从仅数字顺序编号到包含章节号编号
- kindEditor 富文本编辑器 使用介绍
- CentOS7 中没有显示 ip 地址
- 武大计算机系雷军,马化腾739分、雷军700分系湖北状元!大佬们的高考成绩让人敬畏!...
- 视频教程-软考系统集成项目管理工程师视频教程(下)-软考
- 【bitset乱搞】BZOJ3687 简单题
- C++小游戏---杀手1.2.3