繁体   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