2016-01-17 2 views
2

NodeJs отлично работает, когда дело доходит до операций fs/io, но я не мог использовать для доступа к совместно используемому (для хранения) локальному сетевому диску.Использовать узел js для доступа к локальному сетевому диску

filesystem.writeFile('\\192.168.1.1\test.txt', 'data!', function(error){ ... }); 

Я получаю UNKNOWN_ERROR, который не помогает! IP-адрес доступен через проводник (я на окнах) без проблем и доступен для записи (для моего пользователя windnows).

В чем проблема?!

ответ

3

Помните, что в строковом литерале JavaScript \ является символом escape. Фактическое имя файла, которое вы попросили написать, это \192.168.1.1<tab>test.txt (где <tab> представляет символ табуляции), потому что \\ =>\ и \t => вкладка.

Чтобы поставить обратную косую черту в строку, используя строковый литерал, вам нужно, чтобы избежать его (с обратной косой черты):

filesystem.writeFile('\\\\192.168.1.1\\test.txt', 'data!', function(error){ ... }); 
+0

Этого достаточно, чтобы вызвать доступ SMB? Поскольку [модули существуют] (https://www.npmjs.com/package/smb2) для этой цели, я бы не ожидал этого. – Quentin

+0

@Quentin: Этого достаточно, чтобы передать файловые API-интерфейсы ОС, которые берут его оттуда. Поэтому, достаточно ли того, чтобы получить доступ к тому, что они пытаются получить, будет зависеть от их среды. Этот путь выглядит изворотливым для меня, потому что он начинается с двойной обратной косой черты и имени сервера (в этом случае IP), но за ним не следует имя общего ресурса. Я бы ожидал '\\ server-or-ip \ share \ path' (например,' '\\\\ server-or-ip \\ share \\ path" '). Но я так много знаю о SMB ... –

+1

@Quentin: Просто попробовал это в окне Windows. Да, достаточно, если путь правильный. –

Смежные вопросы