簡體   English   中英

Nodejs Express從本地目錄上傳文件

[英]Nodejs Express upload files from local Directory

這是我上傳文件的HTML表單,

                <form action="/upload" method="post" enctype="multipart/form-data">
                    <div class="file-field input-field">
                        <div class="btn">
                            <span>File</span>
                            <input type="file" required name="file_upload">
                        </div>
                        <div class="file-path-wrapper">
                            <input class="file-path validate" type="text">
                        </div>
                    </div>
                    <button style="display: block; margin: 0 auto" class="btn waves-effect waves-light"
                        type="submit">UPLOAD</button>
                </form>

上載可以使用我當前的Express方法。 但是我想從本地目錄中獲取文件列表(例如在下拉列表中),而不是手動選擇文件。 這是我如何獲取文件列表

const testFolder = 'downloads/';
const fs = require('fs');
router.get('/upload', function (req, res) {
   var files= fs.readdirSync(testFolder)
   console.log(files);  
    res.render('upload.html', { 'title': 'Download Page' })
})  

就像我已經知道的那樣,當前顯示的服務器端代碼提供了服務器上而不是最終用戶計算機上的文件列表。

您的服務器無法訪問最終用戶的文件系統,因此您無法在服務器端發送的HTML中構建文件列表。 因此,這意味着對用戶文件系統的任何訪問都必須來自瀏覽器中的功能。

注意:在測試時,您可能在同一台計算機上運行瀏覽器和服務器,因此您可能會對服務器可以看到和看不到的內容感到有些困惑。 正常的部署情況是服務器在一個位置(數據中心中的某個地方)上運行,而最終用戶的計算機位於防火牆后面的不同網絡上,並且服務器根本無法訪問最終用戶的計算機。或文件系統。

瀏覽器用戶界面具有用於列出本地計算機上文件的有限功能集。 這是出於安全原因,因為您要訪問的某些隨機網頁不應該具有查看本地文件系統的能力,因為存在各種濫用該信息的方法。

因此,網頁無法列出文件並將其插入您自己的UI(以使您成為自己的文件選擇器)。 實際上,除通過內置文件選擇器外,網頁和網頁中的Javascript均無權訪問本地文件系統。 這確保了唯一公開到網頁的文件是最終用戶自己從瀏覽器提供的已知安全且不可自定義的用戶界面中特別選擇的文件。 出於安全原因,所有這些都是完成的。

除此之外的任何其他訪問都需要具有增強權限的瀏覽器插件,該插件由用戶下載並安裝到他們的瀏覽器中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM