9 spring sftp jsch spring-boot spring-integration-sftp
我正在尝试使用 SFTP 将 excel 文件从本地 Windows PC 上传到 linux 机器。
这是我的代码:
private void uploadToSftp() {
try
{
ChannelSftp sftpClient = null;
Channel channel = null;
JSch jsch = new JSch();
Session session = jsch.getSession("username", "host", 22);
session.setPassword("password");
Properties config = new Properties();
config.put("StrictHostKeyChecking","no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
sftpClient = (ChannelSftp) channel;
sftpClient.cd("/var/www/folder");
File localFile = new File("C:\\Workspace\\upload-file\\test.xlsx");
sftpClient.put(localFile.getAbsolutePath(),localFile.getName());
sftpClient.disconnect();
channel.disconnect();
session.disconnect();
} catch (JSchException e) {
e.printStackTrace();
} catch (SftpException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
但每次我运行这个应用程序时,我都会收到错误消息:
3: Permission denied
at com.jcraft.jsch.ChannelSftp.throwStatusError(ChannelSftp.java:2873)
at com.jcraft.jsch.ChannelSftp._put(ChannelSftp.java:594)
at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:475)
at com.jcraft.jsch.ChannelSftp.put(ChannelSftp.java:365)
Run Code Online (Sandbox Code Playgroud)
有谁知道可能是什么问题,我该如何解决这个问题?
小智 8
您似乎将本地文件“C:\Workspace\upload-file\test.xlsx”上传到SFTP 上的远程目录“/var/www/folder”。
我猜你有所有权限[R eading,w ^ riting,ē xecuting等在您的本地文件(“C:\工作区\上传文件\ test.xlsx”),但你的远程文件夹,“在/ var / WWW /文件夹” , 可能不接受您的应用程序的访问权限,包括“上传”操作。
解决方案:
解决此问题的最简单方法是授予所有用户在上传目标目录 ( "/var/www/folder" ) 中执行任何操作的所有权限。请尝试使用此 linux 命令检查上传文件夹的权限。
ls -ld /var/www/folder
Run Code Online (Sandbox Code Playgroud)
如果你看到你的/ var / WWW /文件夹/目录不允许W¯¯ riting或[R eading(前的。drwxr-XR-X),对于普通用户,请权限授予该文件夹与follwing命令。
chmod 777 /var/www/folder
//check permission again.
ls -ld /var/www/folder
Run Code Online (Sandbox Code Playgroud)
如果您可以检查目标文件夹的权限是否足够(drwxrwxrwx),请再次运行您的应用程序。
注意: 为其他用户授予所有权限不被认为是一种好的做法。请仅执行此解决方案进行测试,然后更改适合您的规范的权限设置。欲了解更多详情,请查看此链接(点击)。
归档时间: |
|
查看次数: |
28093 次 |
最近记录: |