@@ -191,22 +191,17 @@ In `Pages\DecodeImage.razor`, we will modify the component to enable barcode dec
191191<PageTitle>Dynamsoft Barcode Reader Hello World - Blazor</PageTitle>
192192
193193<h1>Decode Image</h1>
194- <InputFile id="inputElement" style="margin-bottom: 1rem" OnChange="DecodeImageTask" accept="image/*" />
194+ <InputFile id="inputElement" style="margin-bottom: 1rem" OnChange="DecodeImageTask" accept="image/*" multiple />
195195<h3 style="margin-bottom: 1rem">Results:</h3>
196196<div id="results" style="width: 100%; height: 30vh; overflow: auto; white-space: pre-wrap"></div>
197197
198198@code {
199199 // reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-interoperability/call-javascript-from-dotnet?view=aspnetcore-8.0#invoke-js-functions
200200
201- private async Task DecodeImageTask(InputFileChangeEventArgs e )
201+ private async Task DecodeImageTask()
202202 {
203203 // Dynamically load decode image module
204204 await JS.InvokeVoidAsync("loadDecodeImageModule");
205-
206- var imageFile = e.File;
207- var jsImageStream = imageFile.OpenReadStream(1024 * 1024 * 20);
208- var dotnetImageStream = new DotNetStreamReference(jsImageStream);
209-
210205 await JS.InvokeAsync<string>("startImageDecode");
211206 }
212207
@@ -232,36 +227,37 @@ Reference: https://learn.microsoft.com/en-us/aspnet/core/blazor/javascript-inter
232227```
233228// Create JS function "startImageDecode"
234229window.startImageDecode = async () => {
235- const inputElement = document.getElementById("inputElement");
236- const resultsContainer = document.getElementById("results");
237-
238- const file = inputElement.files[0]; // Get the first file from the input element
239-
240- try {
241- if (file) {
242- // Convert file to blob
243- const arrayBuffer = await file.arrayBuffer();
244- const blob = new Blob([arrayBuffer]);
245-
246- cvRouter = await Dynamsoft.CVR.CaptureVisionRouter.createInstance();
247- const result = await cvRouter.capture(blob, "ReadBarcodes_SpeedFirst");
248- resultsContainer.innerText = `File: ${file.name}\n`;
249- for (let item of result.items) {
250- if (item.type !== Dynamsoft.Core.EnumCapturedResultItemType.CRIT_BARCODE) {
251- continue;
252- }
253- resultsContainer.innerText += item.text + "\n";
254- }
255- if (!result.items.length) resultsContainer.innerText += "No barcode found\n";
256-
257- await cvRouter?.dispose()
230+ const inputElement = document.getElementById("inputElement");
231+ const resultsContainer = document.getElementById("results");
232+ resultsContainer.innerText = ""; // Reset results container
233+
234+ const { files } = inputElement;
235+
236+ try {
237+ for (let file of files) {
238+ cvRouter = await Dynamsoft.CVR.CaptureVisionRouter.createInstance();
239+ // Decode selected image with 'ReadBarcodes_SpeedFirst' template.
240+ const result = await cvRouter.capture(file, "ReadBarcodes_SpeedFirst");
241+ if (files.length > 1) {
242+ resultsContainer.innerText += `\nFile: ${file.name}\n`;
243+ }
244+ for (let item of result.items) {
245+ if (item.type !== Dynamsoft.Core.EnumCapturedResultItemType.CRIT_BARCODE) {
246+ continue;
258247 }
259- } catch (ex) {
260- let errMsg = ex.message || ex ;
261- console.error(errMsg);
262- resultsContainer.innerText += `Error: ${errMsg}`
248+ resultsContainer.innerText += item.text + "\n";
249+ console.log(item.text) ;
250+ }
251+ if (!result.items.length) resultsContainer.innerText += "No barcode found\n";
263252 }
264- }
253+ } catch (ex) {
254+ let errMsg = ex.message || ex;
255+ console.error(errMsg);
256+ alert(errMsg);
257+ } finally {
258+ await cvRouter?.dispose();
259+ }
260+ };
265261```
266262
267263### Modify the ` wwwroot\index.html ` file
0 commit comments