我正在开发认证系统。为了不让您觉得书信麻烦,我需要在同一页面上保存学生和护照的QRQR码。
生成qrcode的代码在我的GET方法中,如下所示:
var matno = HttpContext.Session.GetString("LoggedInUser");
ViewBag.QRCodeDataFor = matno;
var student = _context.Students.FirstOrDefault(c => c.MatricNumber == matno);
using (MemoryStream ms = new MemoryStream())
{
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(student.ProfileHash, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
using (Bitmap bitMap = qrCode.GetGraphic(20))
{
bitMap.Save(ms, ImageFormat.Png);
ViewBag.QRCodeImage = "data:image/png;base64," + Convert.ToBase64String(ms.ToArray());
}
}
这是视图:
<img src="@ViewBag.QRCodeImage" alt="QRCode Image" style="width:150px" />
<input type="file" asp-for="Passport">
asp-for="QRCodeData" />
这是我保存图像的代码
var currentstudent = _context.Students.FirstOrDefault(c => c.MatricNumber == students.MatricNumber);
if (ModelState.IsValid)
{
var files = HttpContext.Request.Form.Files;
foreach (var Image in files)
{
if (Image != null && Image.Length > 0)
{
var file = Image;
var uploads = Path.Combine(_hostingEnvironment.WebRootPath, "Uploads");
//"/" + Path.GetFileName(pic.FileName)
if (file.Length > 0)
{
//var fileName = Guid.NewGuid().ToString().Replace("-", "") + Path.GetExtension(file.FileName);
var fileName = Path.GetFileName(file.FileName);
using (var fileStream = new FileStream(Path.Combine(uploads, fileName), FileMode.Create))
{
//ViewBag.MyPassport = "/" + uploads + Path.GetFileName(file.FileName);
//var a = ViewBag.MyPassport;
await file.CopyToAsync(fileStream);
if (fileName.Contains("dotqrcode"))
{
currentstudent.QRCodeData = fileName;
}
else
{
currentstudent.Passport = fileName;
}
}
}
}
}
_context.Update(currentstudent);
_context.SaveChanges();
return RedirectToAction("TempID", "Identity");
}
else
{
return BadRequest(ModelState);
}
再次,我面临的挑战是如何保存此QR Code图片。
预先感谢