NodeJS 如何在共享网络驱动器上创建网页

y3bcpkx1  于 2023-02-15  发布在  Node.js
关注(0)|答案(1)|浏览(109)

我们的工作场所有一个共享网络驱动器,我们部门的每个人都可以访问该驱动器,而无需明确要求凭据。
我所在部门的任何人都可以通过文件资源管理器甚至浏览器访问此链接。目前,我通过调用驱动器上存在的python脚本来使用此链接,方法是使用

> pushd myworkplace.com/.../python/
> ./python.exe scriptPath/script.py arg1 arg2

其结果是,它将一组文件(arg 1)从SFTP服务器(arg 2)复制到此驱动器上,以便部门中的每个人通过新的链接/目录路径进行查看。现在,我想创建一个非常基本的网页,部门中的其他人可以使用该网页将arg 1和arg 2作为输入传递到此脚本,然后单击按钮即可自行运行此脚本。
我的研究表明我应该使用node.js,因为没有它,客户端网页就不能与服务器端脚本/工具交互。这需要严格的网络配置,这是完全不可能的,因为这不是我们的责任,我最不想做的事情就是从网络团队那里收到一封愤怒的电子邮件。然而,如果我和其他人可以轻松地将d推入驱动器并从中运行脚本,难道不应该有一些简单的事情,我可以从网页上做?也许我可以利用网络驱动器本身的网络配置?
我也相信我可能完全误解了这个问题,也许我是从驱动器调用脚本,但实际上是在本地运行它,但我对网络的知识非常贫乏,所以我不太确定什么是真正可能的。

q5lcpyga

q5lcpyga1#

所以我可以很简单地解决这个问题
当我推入网络驱动器时,我可以运行命令

ipconfig

它返回驱动器的IP地址。我使用该地址作为主机名并使用端口8080。在运行node.js脚本时,我确保使用以下详细信息

const express = require("express");
const app = express();
const host = '11.111.111.111';
const port = 8080;

app.get('/Home', (req,res) => {
res.sendFile(<UNC Network path to HTML landing page >)
})

app.listen(port, host, () => console.log(`App listening on port ${port}`))

当我和我的同事在浏览器中输入“11.111.111.111:8080/Home”时,我们可以访问该页面及其内容。我认为这是创建网站的标准协议,我可能只是误解了要求。
呈现的HTML页面包含一个按钮,该按钮将调用我的node.js脚本中的另一个函数,该函数将返回我的python脚本的输出。

function myFunc(arg1, arg2){
    const spawner = require('child_process');
    const path = require('path');
    var dataToRead;

    //declare path to python executable
    const python_exe = path.resolve(<UNC path> + 'python/python.exe');

    //declare path to python script
    const python_py = path.resolve(<UNC path> + 'script.py');

    //create a process on server side calling the python executable to initiate python 
    //and pass the script and arguments as a list of paramaters
    const python_call = spawner(python_exe, [python_py, arg1, arg2]);

    //read the output from python script
    python_call.stdout.on('data', (data) => {
        dataToRead = data.toString();
    }
}

这就是我如何使用网络驱动器创建一个调用python脚本并检索结果的webapp
我不能将网站名称更改为字符串,因为这需要配置DNS以指向此IP和端口,这不是网络团队以外的人可以访问的。

相关问题