Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript检索绝对文件路径_Javascript_Node.js_Reactjs - Fatal编程技术网

使用Javascript检索绝对文件路径

使用Javascript检索绝对文件路径,javascript,node.js,reactjs,Javascript,Node.js,Reactjs,假设您有一个使用NodeJS和ReactJS的web应用程序。他们都在你的本地机器上工作。NodeJS通过简单的文件上传接受从reactjsgui中选择的一些文件。像这样: 您希望将此文件传递给节点,以便它执行一些大数据操作。但是,由于浏览器无法访问客户端的文件系统,因此您不能选择所选文件的绝对路径。因此,您不能将该文件通知NodeJS服务器。最好的方法是什么 我尝试用react读取文件,然后将其写入NodeJS已经知道的路径,但在我看来,这并不是最好的方法。非常简单。当你上传一个像 <

假设您有一个使用NodeJS和ReactJS的web应用程序。他们都在你的本地机器上工作。NodeJS通过简单的文件上传接受从reactjsgui中选择的一些文件。像这样:

您希望将此文件传递给节点,以便它执行一些大数据操作。但是,由于浏览器无法访问客户端的文件系统,因此您不能选择所选文件的绝对路径。因此,您不能将该文件通知NodeJS服务器。最好的方法是什么


我尝试用react读取文件,然后将其写入NodeJS已经知道的路径,但在我看来,这并不是最好的方法。

非常简单。当你上传一个像

<input type="file" />


如果您得到一个文件blob,您可以使用rest API或解析数据将此blob发送到服务器,然后将此数据传递到服务器。

如果您的应用程序始终位于本地计算机上,则通过electron的桌面应用程序将是一种有效的方法(正如idmean所注意到的)。在那里,您可以使用nodejs模块
fs
处理文件,即使在前端也是如此,这是通过与后端的进程间通信启用的。
如果不是这样,nodejs服务器将来将位于internet上,那么上传文件并通过nodejs服务器保存可能是最好的方法。

浏览器不可能获取上传文件的绝对url。这将违反安全性

因此,您无法发送绝对文件路径并通过节点中的
fs
读取它。您可以从客户端传递
base64
,并在
Node.js
中处理文件上载,也可以使用类似的桌面选项


如果你的应用程序总是在本地运行,你也可以在
Node.js
中预定义下载文件夹,例如
(C:/Downloads)
,并总是从同一文件夹上载文件,从客户端发送
文件名
。因此,如果你选择了一个名为
a.jpg
的文件,你的
Node.js
本地代码可以使用
fs
读取路径
C:/Downloads/a.jpg

为什么你需要绝对文件路径才能将文件上传到服务器?“两者都在本地机器上工作”如果总是这样,为什么不使用例如Electron?jenilchristo Hi,我的NodeJS中没有等待文件的侦听器。我无法决定是否应该这样做,因为我的应用程序将始终在带有NodeJS和ReactJS的本地机器上工作。我只需要文件的绝对路径,它位于NodeJS可以用简单的var fs=require('fs')读取的地方@我的意思是嗨,谢谢,我查过了,这可能是一个很好的解决方案。但是仍然很好奇,是否有一种简单的方法可以在不失去浏览器支持的情况下实现这一点。如果你坚持使用web应用程序,那么说你的后端框架(ExpressJS/AdonisJS/…)你能扩展你的答案吗?“使用标签上传文件”是什么意思?举个例子就好了!