我想上传一个非常大的文件,它的大小可以是1 GB。是否可以将其上传或下载到/从 SFTP 服务器?我正在使用 JSch 库。
你的问题真的没有意义。你似乎做出了一些不正确的假设。但很难说这些是什么,因为你的问题相当少。
“分段上传”是与其他协议一起使用的术语。这些通常是基于 HTTP 的协议(如 S3、REST 等),因为 HTTP 在上传大文件时存在问题。例如,客户端和服务器之间的防火墙可能不允许 HTTP 连接保持打开足够长的时间来完成大文件的上传。
这通常与 SFTP 无关,至少有两个原因:
SFTP 传输(包括上传)是基于数据包的,这与基于流的 HTTP 不同。所以它在某种程度上是有效的多部分。
使用 SFTP,客户端发送任意长度的写入请求序列。不像 HTTP 那样是一种巨大的数据流。这些请求也可以在最终重新连接后恢复(这与“分段上传”完全相同)。
使用 JSch 库,您可以使用带参数的方法重载实现“分段上传”:ChannelSftp.putoffset
public OutputStream put(
String dst, final SftpProgressMonitor monitor, final int mode, long offset)
throws SftpException{
Run Code Online (Sandbox Code Playgroud)
或者,更简单的是,您可以使用ChannelSftp.RESUME模式,它会自行处理偏移量。另请参阅恢复文件传输中途失败的文件传输或如何在 JSch SFTP 上享有声誉?
但同样,您并不真正需要使用 SFTP 进行“分段上传”。该ChannelSftp.RESUME模式的目的是允许在(罕见的)断开连接的情况下恢复文件传输,而不是实现“分段上传”。
| 归档时间: |
|
| 查看次数: |
1515 次 |
| 最近记录: |