2

ユーザーがファイルをアップロードできるようにする ftp クライアントがあります。どのユーザー/ホスト/...がそのファイルをアップロードしたかを特定したい.すべての人が同じユーザー名を使用してファイルをアップロードします.唯一の違いは、異なるコンピューターを使用することです.

どのユーザーがそのファイルをアップロードしたかを追跡する方法はありますか?

public static void uploadFileToServerViaSunFtp(final String source,final JPanel panel, final JTextArea textArea)
{
    SwingWorker uploadWorker = new  SwingWorker<Boolean,String>()
    {
        @Override
        protected Boolean doInBackground() throws Exception
        {
            publish("File "+FilenameUtils.getName(source).concat(" starts uploading on ") + String.valueOf(Calendar.getInstance().getTime() + "\n"));
            boolean success = false;
            FtpClient client;
            try
            {
                client = new FtpClient(server.getFtpServer());
                client.login(server.getUsername(), server.getPassword());
                client.cd("PC");
                client.binary();
                int BUFFER_SIZE = 10240;
                byte[] buffer = new byte[BUFFER_SIZE];

                File f = new File(source);
                FileInputStream in = new FileInputStream(source);
                // *** If uploading take long time, progress bar will show up ***
                InputStream inputStream = new BufferedInputStream(
                        new ProgressMonitorInputStream(panel, "Uploading " + f.getName(), in));
                OutputStream out = client.put(f.getName());
                while (true) {
                    int bytes = inputStream.read(buffer);
                    if (bytes < 0)
                        break;
                    out.write(buffer, 0, bytes);
                }
                out.close();
                in.close();
                inputStream.close();
                client.closeServer();
                success = true;
            }
            catch (IOException e)
            {
                OeExceptionDialog.show(e);
            }
            return success;
        }

        @Override
        protected void done()
        {
            super.done();
            try {
                if(get())
                    textArea.append("File "+FilenameUtils.getName(source).concat(" Uploaded successfully.\n"));
        }
    };
    uploadWorker.execute();
}
4

2 に答える 2

5

FTP サーバーに保存されているファイルには、所有者 ( oid) とグループ ( gid) があります。

FTP サーバーにログインする目的は、認証と許可の両方を得ることです。したがって、ファイルをアップロードするユーザーごとに「異なるユーザー名」のように、異なるユーザーを設定する必要があります。

すべてのユーザーが同じユーザー名を使用しても意味がありません。区別ができなくなるからです。

IPアドレスをチェックすることは完全にナンセンスです。私がこれを言っている理由は、あなたのローカル ネットワーク上にいれば、誰でも IP アドレスを乗っ取ることができるからです。ここでは検証がほとんど行われておらず、ローカル DNS がその役割を果たしてくれるとは信頼できません。

別のユーザー名を使用するだけです。

于 2012-06-25T07:28:48.327 に答える
2

クライアント側のコードは質問にどのように関連していますか? もちろん、サーバーは、ファイルをアップロードする前にログインしたユーザーの名前と、どの IP アドレスから接続が行われたかを認識しています (IP アドレスがプロキシ/NAT によってマスクされている場合を除く)。さらに、アップロードされたファイルのプロパティは、ファイルをアップロードしたユーザーの所有者とグループに対応する、Unix の所有者とグループ、または Windows のセキュリティ属性を持つように設定されることがよくあります。

于 2012-06-25T07:08:57.877 に答える