【问题标题】:Returning corrupted file from SFTP server in Java REST API在 Java REST API 中从 SFTP 服务器返回损坏的文件
【发布时间】:2021-01-15 08:24:04
【问题描述】:

我正在尝试使用 Java REST API 从 SFTP 服务器获取文件。

这里我使用 JSch 连接到 SFTP 服务器。文件有 PDF、PNG、DOC 等。

但返回的文件已损坏。这是我的代码。

String data;
InputStream stream = channelSftp.get("/folder/"+name);
try {
    BufferedReader br = new BufferedReader(new InputStreamReader(stream,"utf8"));
    String line;

    while ((line = br.readLine()) != null) {
        data += line+"\n";
    }                          

} catch (Exception e) {
        e.printStackTrace();
}

return Response.ok(data, MediaType.APPLICATION_OCTET_STREAM)
    .header("Content-Disposition", "attachment; filename=\"" + name + "\"") 
    .build();

你能给我一个解决这个问题的方法吗?

【问题讨论】:

    标签: java rest file sftp jsch


    【解决方案1】:

    您无法将 PDF/PNG/DOC 等二进制文件作为文本读取。这就是腐蚀他们的原因。

    直接返回InputStream,原封不动:

    InputStream stream = channelSftp.get("/folder/"+name);
    return Response.ok(stream, MediaType.APPLICATION_OCTET_STREAM)
        .header("Content-Disposition", "attachment; filename=\"" + name + "\"") 
        .build();
    

    另见RESTful produces binary file

    【讨论】:

      猜你喜欢
      • 2019-01-19
      • 2019-02-18
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多