ASP .NET Core - Gerando e Salvando QR Code - II
Hoje veremos como gerar e também salvar os arquivos QR Code na ASP .NET Core MVC. |
Continuando a primeira parte do artigo veremos como salvar os arquivos QR Code gerados.
Podemos facilmente salvar os arquivos QR Code gerados. Esses arquivos possuem a extensão .qrr e veremos como fazer isso a seguir.
Salvando os arquivos QR Code
Abra o controlador QRCodeController criado no projeto e ajuste o código do método [HttpPost]Index incluindo as linhas de código destacadas em azul abaixo:
public class QRCodeController : Controller
{
...
[HttpPost]
public IActionResult Index(string qrTexto)
{
QRCodeGenerator qrGerador = new QRCodeGenerator();
QRCodeData qrCodeData = qrGerador.CreateQrCode(qrTexto,QRCodeGenerator.ECCLevel.Q);
string arquivoGuid = Guid.NewGuid().ToString().Substring(0, 4);
qrCodeData.SaveRawData("wwwroot/qrr/arquivo-" + arquivoGuid + ".qrr",
QRCodeData.Compression.Uncompressed);
QRCodeData qrCodeData1 = new QRCodeData("wwwroot/qrr/arquivo-" + arquivoGuid + ".qrr",
QRCodeData.Compression.Uncompressed);
QRCode qrCode = new QRCode(qrCodeData1);
Bitmap qrCodeImage = qrCode.GetGraphic(20);
return View(BitmapToBytes(qrCodeImage));
}
...
|
Neste código o método Action [HttpPost] Index agora vai gerar os arquivos de QR Code gerados na pasta wwwroot/qrr com o nome 'arquivo-' mais o número GUID e a extensão .qrr.
Nota: Crie a pasta qrr dentro da pasta wwwroot do projeto.
Após o arquivo ser criado lemos o arquivo e o salvamos no website, e, a seguir convertemos para bitmap conforme anteriormente.
O código da view Index.cshtml da pasta QRCode não sofre alteração alguma.
Lendo os arquivos QR Code
Para ler os arquivos gerados na pasta wwwroot/qrr vamos criar o método Action ViewFile() no controlador QRCodeController com o código abaixo:
public IActionResult ViewFile()
{
List<KeyValuePair<string, Byte[]>> fileData = new List<KeyValuePair<string, byte[]>>();
KeyValuePair<string, Byte[]> data;
string[] files = Directory.GetFiles("wwwroot/qrr");
foreach (string file in files)
{
QRCodeData qrCodeData = new QRCodeData(file, QRCodeData.Compression.Uncompressed);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20);
Byte[] byteData = BitmapToBytes(qrCodeImage);
data = new KeyValuePair<string, Byte[]>(Path.GetFileName(file), byteData);
fileData.Add(data);
}
return View(fileData);
}
|
Neste código os arquivos são lidos da pasta wwwroot/qrr usando o código : Directory.GetFiles("wwwroot/qrr"); e o objeto é retornado para a View ao final.
Para visualizar os arquivos vamos criar a view ViewFile.cshtml na pasta QRCode com o seguinte código:
@model List<KeyValuePair<string, Byte[]>>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Lendo arquivos QR Code</title>
</head>
<body>
<div class="container">
<div id="content">
<h1>Lendo arquivos QR Code</h1>
<div id="viewContent">
<table>
<tbody>
@foreach (KeyValuePair<string, Byte[]> k in Model) {
<tr>
<td>
<img src="@String.Format(" data:image/png;base64,{0} ",
Convert.ToBase64String(k.Value))" />
<span>@k.Key</span>
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
</div>
</body>
</html>
|
Agora vamos incluir um link no arquivo _Layout.cshtml para ler os arquivos gerados:
...
<div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="QRCode" asp-action="Index">Gerar QR Code</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="QRCode" asp-action="ViewFile">Ler QR Code</a>
</li>
</ul>
</div>
...
|
Executando o projeto iremos obter:
Pegue o código completo do projeto aqui: Aspc_QRCode.zip
Cantarei ao Senhor, porquanto me tem feito muito bem."
Salmos 13:5,6
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB .NET - Gerando, Salvando e lendo QRCode - Macoratti
ASP .NET - Gerando QRCode com a API do Google - Macoratti