将Excel文件从UNIX服务器下载到Windows客户端

时间:2019-06-09 14:02:24

标签: java file server download client

我最近开始使用Java开发应用程序。该应用程序的目的是以excel文件的形式处理一些api和输出信息。 JAR位于服务器上,并在用户在客户端(本地计算机)上发送请求时运行。

该应用程序成功在服务器位置生成了excel文件。我尝试使用JAVA ChannelSftp方法从服务器下载到我的本地计算机(客户端位置),但是它在JAR位置(即服务器位置)而不是客户端位置创建了一个新文件。 代码段如下所示,这将在JAR位置创建一个文件,文件名为C:\ Users \ PFName-CFName_Co.xlsx

String SerDir=System.getProperty("user.home") + "/Desktop/";
String LocDir="C:\Users\";
String SerFC = SerDir+PFName+"-"+CFName+"_Co.xlsx";
String LocFC = LocDir+PFName+"-"+CFName+"_Cos.xlsx";
Session session = null;
ChannelSftp sftpChannel=null;
Channel channel = null;
JSch jsch = new JSch();
    try
    {
        session = jsch.getSession(username, hostname, 22);   
        session.setConfig("StrictHostKeyChecking","no");
        session.setPassword(password);
        Properties config = new Properties();
        config.put("StrictHostKeyChecking", "no");
        session.setConfig(config);
        session.connect();
        channel = session.openChannel("sftp");
        channel.connect();
        sftpChannel =(ChannelSftp) channel;
        sftpChannel.cd(SerDir); 
        File file = new File(SerFC);
        byte[] buffer = new byte[1024];
        BufferedInputStream bis;
        bis = new BufferedInputStream(sftpChannel.get(file.getName()));
        File newFile = new File(LocDir + file.getName());
        // Download file
        OutputStream os = new FileOutputStream(newFile);
        BufferedOutputStream bos = new BufferedOutputStream(os);
        int readCount;
        while ((readCount = bis.read(buffer)) > 0) {
            bos.write(buffer, 0, readCount);
    }
bis.close();
bos.close();

请检查并帮助我如何将文件下载到客户端位置(C盘中的任何位置)

0 个答案:

没有答案