我试图将一个文件从Unix框复制到我的本地桌面,但是我得到了错误:Errno::EACCES: Permission denied - C:\Users\MyUser\Desktop
require 'net/sftp'
Net::SFTP.start(unixBox, user, :password => password) do |sftp|
sftp.download!(filePathOnUnixBox, 'C:\Users\MyUser\Desktop')
end我的桌面:Windows 7
ruby 1.8.7 (2010-12-23 patchlevel 330) i 386-mingw32 32
net-sftp (2.1.1)
Unix: SunOS
更新:看起来你必须在你的文件路径中指定文件名,这样C:\Users\MyUser\Desktop就变成了C:\Users\MyUser\Desktop\fileNameIWant.ext。
发布于 2013-05-01 13:40:30
看起来您必须在要文件路径中指定文件名,这样C:\Users\MyUser\Desktop才能成为C:\Users\MyUser\Desktop\fileNameIWant.ext。
之前,我只指定了路径,而没有指定文件名。
发布于 2013-04-29 13:33:58
看起来,运行ruby脚本的用户没有写入HDD的权限。也许MyUser不是执行脚本的用户。
编辑:
忘了说,你可以试着逃避窗户的反斜杠。尝试:
C:\\Users\\MyUser\\Desktop作为局部路径
发布于 2013-04-29 14:43:33
要避免疯狂,可以做的一件事是在使用Ruby时停止在Windows文件名中使用反斜杠。根据IO文件
如果可能,Ruby将在不同操作系统约定之间转换路径名。例如,在Windows系统上,文件名"/gumby/ruby/test.rb“将以"\gumby\ruby\test.rb”的形式打开。..。
https://stackoverflow.com/questions/16279901
复制相似问题