我有一个文件要上传(比如abc.pdf
)。我第一次想将这个文件作为临时文件上传(比如abc.pdf.temp
)。然后,如果文件成功传输(完全传输),那么我需要将其重命名为其原始名称(abc.pdf
)。但是如果文件没有完全传输,那么我需要删除我最初上传的临时文件,因为我不想在服务器中保留损坏的文件。使用这个JSch库可以做到这一点吗?下面是示例代码。这段代码对实现这一点有意义吗?
示例代码:
originalFile = 'abc.pdf';
tempFile = 'abc.pdf.temp';
fileInputStream = createobject("java", "java.io.FileInputStream").init('C:\abc.pdf');
SftpChannel.put(fileInputStream,tempFile);
// Comparing remote file size with local file
if(SftpChannel.lstat(tempFile).getSize() NEQ localFileSize){
// Allow to Resume the file transfer since the file size is different
SftpChannel.put(fileInputStream,tempFile,SftpChannel.RESUME);
if(SftpChannel.lstat(tempFile).getSize() NEQ localFileSize){
// Check again if the file is not fully transferred (During RESUME) then
// deleting the file since dont want to keep a corrupted file in the server.
SftpChannel.rm(tempFile);
}
}else{//assuming file is fully transferred
SftpChannel.rename(tempFile ,originalFile);
}
>
在put
不抛出完成后,文件大小不匹配的可能性很小。这几乎不可能发生。即使发生了,调用RESUME
也没有什么意义。如果put
没有检测到灾难性的错误,RESUME
不太可能有帮助。
而且即使你想尝试使用RESUME
,尝试一次也是没有意义的,如果你相信重试是有意义的,你必须不断重试直到成功,而不仅仅是一次。
您应该捕获异常并恢复/删除/无论如何。这是主要的恢复机制。这比1发生的可能性高100倍。
我正在尝试使用Jsch Sftp通道将一个文件上传到一个IBM大型机,目录必须是“//”,在那里大型机会自动将文件路由到它需要去的地方。 在IBM大型机上的sftp命令会话中,我可以执行以下操作: 我对我的/users/home/myusers目录执行JSch sftp会话完全没有问题,只是无法将其转到//
我正在使用JSCH从SFTP服务器下载文件。我使用单会话,多通道下载文件从不同文件夹位于SFTP。对于这个下载过程,我有一组排定的作业。每项工作将: 每次打开一个新通道()。通道名称:SFTP 使用方法获取要下载的文件总数的大小 如果size(Vector)大于零,则使用下载所有文件 最后关闭打开的通道。 在上面的过程中,大多数时候我得到的文件,找不到或没有这样的文件异常,并没有下载一些文件。 谁
问题内容: 我希望能够从known_hosts中删除远程服务器密钥,然后再次添加它。远程服务器经常更新,因此我想自动删除远程主机密钥并将其新密钥添加到known_hosts。我可以从known_hosts中删除密钥,尽管它很笨拙,并且使用了a 而不是通过JSCH。这可行,但是每当我尝试访问服务器时都会遇到此消息: 我知道可以使用UserInfo解决此消息,但是我使用其他方式连接到远程服务器,例如a
我试图开发一个程序,这是检索一组文件从一个SFTP服务器到另一个本地目录。 下载完成后,我们用他的真实文件名重命名文件(服务器SFTP的文件名)
问题内容: 我正在Android Studio中运行单元测试。我有一个使用以下代码加载本机库的Java类 但是当我在目录中测试此类时,我得到 我如何才能找到位于本地的.so库的路径,以便进行无误的单元测试? 注:里面的目录我有3个子目录:,和。其中的每一个都包含正确的.so文件。我正在使用 非实验版本 来构建NDK库。 我不想使用其他第三方测试库,因为我所有其他“纯” java类都可以进行单元测试
我试图上传一个应用程序到谷歌播放商店,但我得到了下面的错误消息,没有任何进一步的评论: 无法上传。再试一次。 在过去,我已经上传了许多应用程序到Play-Store。我不太确定为什么这个没有通过。有问题的apk是一个签名发行的apk。我很感激你在这方面的帮助。请在Play Store页面找到以下屏幕截图。