0

Java クラスから Unix ディレクトリにファイルをアップロードしようとしていますが、アップロード時に FileNotFoundException が発生しましたが、何が問題なのかわかりません。ファイルをアップロードするには、jcraft API を使用していますが、このコマンド「channelSftp.put(new FileInputStream(f), f.getName());」でエラーが発生します。ファイルが存在し、接続が機能しており、パラメーター (fileName と pathToUpload が正しく渡されています。エラーは、fileName ディレクトリ パスが添付されていないためですか? ブラウザーでは、パスをファイル名だけで送信できませんでした。投稿します。私のコード誰かが明確な解決策を持っている場合は、ここに投稿してください. サンプルコードは本当に役に立ちます. ありがとう.

public String uploadFile(String fileName, String pathToUpload) throws IOException {
    session = UnixConnect.getInstance();
    String SFTPWORKINGDIR = pathToUpload;
    String result ="File failed to upload";
    String fileName = new File(fileName).getName(); // file is document.pdf 

    Channel channel = null;
    ChannelSftp channelSftp = null;

    try {
        channel = session.openChannel("sftp");
        channel.connect();
        //System.out.println("SFTP connection established");
        channelSftp = (ChannelSftp)channel;
        channelSftp.cd(SFTPWORKINGDIR);

        File f = new File(fileName);
        ////////////////////////////////////////////
        // file not found error in the next line. 
        //////////////////////////////////////////
        channelSftp.put(new FileInputStream(f), f.getName());


        //change mode for uploaded file 
        String fullpath = SFTPWORKINGDIR +  fileName;
        channel=session.openChannel("exec");
        ((ChannelExec)channel).setCommand("chmod 770 " + fullpath);
        channel.setInputStream(null);
        ((ChannelExec)channel).setErrStream(System.err);

        InputStream in=channel.getInputStream();
        channel.connect();

        result = "File " + fileName + " updloaded to directory " + SFTPWORKINGDIR;

    }
    catch (Exception e) {
        System.out.println("Class uploadFile exception: " + e.toString());  
    }
    finally{
         if (channel != null) {
             channel.disconnect();
         }
    }

    return result;
}

スタックトレース:

     08:42:02,583 ERROR [STDERR] java.io.FileNotFoundException: test.pdf 
        (The system cannot find the file specified) 08:42:02,583 ERROR [STDERR] at 
java.io.FileInputStream.open(Native Method) 08:42:02,584 ERROR [STDERR] at 
    java.io.FileInputStream.<init>(FileInputStream.java:120) 08:42:02,584 ERROR [STDERR] at 
    spt.implement.uploadFile.uploadFile(uploadFile.java:49) 08:42:02,584 ERROR [STDERR] at 
    spt.controller.UploadController.doPost(UploadController.java:35) 08:42:02,584 ERROR 
    [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
4

1 に答える 1