成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

這篇文章主要介紹“怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用”,在日常操作中,相信很多人在怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)公司是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),小程序設(shè)計,十余年建站對成都紙箱等多個方面,擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)。

ASP.NET Core以優(yōu)異的性能、良好的跨平臺特性、完善的文檔支持,在開發(fā)者之中獲得了不錯的反響。C# Web應(yīng)用開發(fā)者從此可以沿用既有的技術(shù)棧進(jìn)行跨平臺的Web應(yīng)用開發(fā)。

準(zhǔn)備工作

首先,我們需要安裝Dynamic Web TWAIN,以進(jìn)行我們的開發(fā)工作。如果你以前沒有安裝過這個SDK,可以去Dynamic Web TWAIN下載頁面下載最新的版本。

其次,對于從未使用過C#的開發(fā)者而言,可能還需要安裝.Net Core環(huán)境。前往微軟的下載頁面,下載 .Net Core SDK(注意:開發(fā)者需要下載安裝SDK,Runtime包含在SDK里無需額外下載)。

我們強(qiáng)烈推薦開發(fā)者在Windows上使用Visual Studio進(jìn)行開發(fā),這將大大減少配置工作量。

創(chuàng)建項(xiàng)目

無論進(jìn)行任何項(xiàng)目的開發(fā),創(chuàng)建一個工程項(xiàng)目總是第一步。這里我將著重介紹如何使用Visual Studio創(chuàng)建項(xiàng)目。

用Visual Studio創(chuàng)建項(xiàng)目

對于Windows用戶而言,創(chuàng)建一個ASP.NET Core MVC項(xiàng)目如同喝奶茶一樣簡單。Visual Studio提供了模板與自動化工具幫助開發(fā)者自動創(chuàng)建項(xiàng)目,開發(fā)者在很多情況下僅需稍作修改便可將項(xiàng)目投入使用。

首先,我們在歡迎頁面的右下側(cè),選擇Create a new project

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

然后,在創(chuàng)建項(xiàng)目的頁面,選擇ASP.NET Core Web Application。

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

接著,Visual Studio讓我們提供一個名字。我們將它命名為dwtDotCore。

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

最后,我們需要選擇ASP.NET Core Web Application的類型,這里建議選擇Model-View-Controller。我們稍后會將Dynamic Web TWAIN相關(guān)的內(nèi)容在View里實(shí)現(xiàn)。除此之外,我們待會還會創(chuàng)建一個API Controller用于實(shí)現(xiàn)文件上傳需求。

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

到這,項(xiàng)目就創(chuàng)建好了。

用命令行工具創(chuàng)建項(xiàng)目

對于Linux用戶而言,只能通過CLI進(jìn)行項(xiàng)目創(chuàng)建。啟動終端,將工作目錄切換到需要存放項(xiàng)目的路徑,然后輸入以下命令

dotnet new webapp -o dwtDotNet --no-https

該命令將會創(chuàng)建一個ASP.NET Core MVC項(xiàng)目,但是沒有那么全面Visual Studio。

配置項(xiàng)目

我們現(xiàn)在來導(dǎo)入Dynamic Web TWAIN,通常你能在C:\Program Files (x86)\Dynamic\Dynamic Web TWAIN SDK <version>找著Resources文件夾,里面包含了所需的工作文件。

  1. 我們將Resources文件夾拷貝至/wwwroot/lib,并將Resources重命名為dwt。

  2. 進(jìn)入dwt文件夾,打開dynamsoft.webtwain.config.js,找到Dynamsoft.WebTwainEnv.ResourcesPath字段,將其反注釋,并將值改為'/lib/dwt'

    • Dynamic Web TWAIN的加載依賴若干個資源文件,因此需要對發(fā)布后資源文件所在的相對路徑指定清楚,不然會報404 NOT FOUND錯誤。

  3. 找到Dynamsoft.WebTwainEnv.Containers字段,你可以修改或者記住ContainerId,在View里面我們需要創(chuàng)建一個具有此ID的<div></div>元素。

功能開發(fā)

在開發(fā)之前,我們來看一下項(xiàng)目的結(jié)構(gòu)。

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

通過CLI創(chuàng)建項(xiàng)目的讀者,可以參考這張圖補(bǔ)全CLI工具沒有創(chuàng)建的文件,或者使用dotnet-aspnet-codegenerator工具生成欠缺的文件。當(dāng)然,我們在末尾會附上所有的源代碼,你也可以基于源代碼進(jìn)行進(jìn)一步的開發(fā)。

創(chuàng)建View

我們來創(chuàng)建掃描界面。在此之前,記得移除已有的代碼。

將下列代碼貼入index.cshtml

@{
    ViewData["Title"] = "Home Page";
}

<div class="container-fluid">
    <div id="control-panel">
        <button class="btn btn-primary" onclick="AcquireImage()">Scan</button>
        <br />
        <button class="btn btn-outline-secondary" onclick="Upload()">Upload</button>
        <input type="radio" value="jpg" name="format" />JPG
        <input type="radio" value="pdf" name="format" />PDF
        <input type="radio" value="tif" name="format" />TIFF
        <label for="filename-input">File Name: </label>
        <input type="text" id="filename-input" />
    </div>
    <div id="dwt-container">
    </div>
</div>

<!-- DWT script here -->
<script src="~/lib/dwt/dynamsoft.webtwain.initiate.js"></script>
<script src="~/lib/dwt/dynamsoft.webtwain.config.js"></script>
<script>
    function AcquireImage() {
        const DWObj = Dynamsoft.WebTwainEnv.GetWebTwain('dwt-container')
        if (DWObj) {
            if (DWObj.UseLocalService) {
                DWObj.SelectSource(function () {
                    var OnAcquireImageSuccess = OnAcquireImageFailure = function () {
                        DWObj.CloseSource()
                    }
                    DWObj.OpenSource()
                    DWObj.IfDisableSourceAfterAcquire = true
                    DWObj.AcquireImage(OnAcquireImageSuccess, OnAcquireImageFailure)
                }, function () {
                    console.log('SelectSource failed')
                })
            } else {
                DWObj.LoadImageEx('', -1)
            }
        }
    }
    function Upload() {
        const host = location.hostname
        const protocol = location.protocol
        const uploadPath = '/api/File'
        let uploadFileName = document.getElementById('filename-input').value
        const port = location.port || (protocol === 'https:' ? 443 : 80)

        var formatSelector = document.getElementsByName('format')
        let format = (selector => {
            let select = ''
            selector.forEach(e => {
                if (e.checked) {
                    select = e.value
                }
            })
            uploadFileName = uploadFileName + '.' + select
            switch (select) {
                case 'jpg': { return Dynamsoft.EnumDWT_ImageType.IT_JPG }
                case 'pdf': { return Dynamsoft.EnumDWT_ImageType.IT_PDF }
                case 'tif': { return Dynamsoft.EnumDWT_ImageType.IT_TIF }
            }
        })(formatSelector)

        let uploadFormat = Dynamsoft.EnumDWT_UploadDataFormat.Binary

        const DWObj = Dynamsoft.WebTwainEnv.GetWebTwain('dwt-container')
        if (DWObj) {
            DWObj.HTTPPort = port
            DWObj.IfSSL = true
            let indices = DWObj.SelectedImagesIndices
            DWObj.HTTPUpload(
                protocol + '//' + host + ':' + port + uploadPath,
                indices,
                format,
                uploadFormat,
                uploadFileName,
                () => { alert('success') },
                (errCode, errStr, res) => {
                    console.error(`${errCode}: ${errStr}. Server return: ${ res }`)
                }
            )
        }
    }
</script>

特別需要注意的是,dynamsoft.webtwain.initiate.jsdynamsoft.webtwain.config.js需要單獨(dú)引入,并且要保證先后順序。

我們設(shè)置了兩個按鈕,一組單選選項(xiàng),以及一個輸入框,來提供掃描與上傳功能。

實(shí)現(xiàn)文件上傳

我們通過額外的API提供文件上傳服務(wù)。

右鍵單擊Controller文件夾,選擇Add -> New Scaffolded Item...

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

在彈出窗口中,選擇API Controller with read/write actions.

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

然后,僅作文件名修改。在后續(xù)的窗口中,將文件名命名為FileController.cs。

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

最后,將新創(chuàng)建的Controller改為如下所示的代碼

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860

namespace dwtDotCore.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class FileController : ControllerBase
    {
        // POST api/<FileController>
        [HttpPost]
        public async Task<IActionResult> Upload()
        {
            var files = Request.Form.Files;
            var path = Path.Combine(Directory.GetCurrentDirectory(), "Upload");
            if (!Directory.Exists(path))
            {
                try
                {
                    Directory.CreateDirectory(path);
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e.StackTrace.ToString());
                    return Unauthorized("not able to create");
                }
            }
            foreach (var uploadFile in files)
            {
                var fileName = uploadFile.FileName;
                using (var stream = System.IO.File.Create(Path.Combine(path, fileName)))
                {
                    await uploadFile.CopyToAsync(stream);
                }
            }
            return Ok();
        }
    }

}

運(yùn)行程序

我們已經(jīng)完成了所有代碼的編寫,現(xiàn)在來測試以下程序功能。

Visual Studio用戶,提供單擊頂部的運(yùn)行按鈕運(yùn)行程序。

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

CLI用戶通過在命令行輸入以下命令運(yùn)行程序

dotnet restore
dotnet run

一旦服務(wù)器正常啟動,在跳出的瀏覽器窗口內(nèi)你將看到頁面的下部有個矩形框,代表Dynamic Web TWAIN被成功加載。

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

點(diǎn)擊Scan,跳出掃描源選擇器。

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

掃描成功。

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

點(diǎn)擊上傳,將掃描的文檔上傳至服務(wù)器。

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

在服務(wù)端指定的文件夾下確認(rèn)上傳文件。

怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用

到此,關(guān)于“怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

文章題目:怎么用ASP.NET做一個跨平臺的文檔掃描應(yīng)用
分享鏈接:http://jinyejixie.com/article4/ghojoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、標(biāo)簽優(yōu)化、App設(shè)計、網(wǎng)站內(nèi)鏈、動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
伊春市| 台中市| 长治市| 万载县| 兴国县| 宁国市| 苗栗市| 马山县| 土默特左旗| 库伦旗| 宜川县| 湘乡市| 南投县| 莆田市| 区。| 郯城县| 治多县| 珲春市| 平武县| 崇文区| 法库县| 建阳市| 常宁市| 常宁市| 赤壁市| 博爱县| 涟源市| 嘉禾县| 建阳市| 五寨县| 灵台县| 南充市| 肇源县| 综艺| 白朗县| 吴川市| 赤峰市| 永登县| 铅山县| 临夏市| 济南市|