0

我想通过 FTP 帐户将我的一些备份上传并存储到另一台服务器。此帐户只有读取权限(没有写入权限),以防止攻击者删除我的备份。

所以我开始编写具有完全权限(又名读+写)的解决方案。这是我的代码的外观:(此代码当前正在运行)

        string file = @"C:\1.html";
        FtpWebRequest ftpClient = (FtpWebRequest)FtpWebRequest.Create(new Uri(ConfigurationManager.AppSettings["FTPUrl"]) + @"/" + Path.GetFileNameWithoutExtension(file));
        ftpClient.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["FtpUserName"], ConfigurationManager.AppSettings["FtpPassword"]);
        ftpClient.Method = WebRequestMethods.Ftp.UploadFile;
        ftpClient.UseBinary = true;
        ftpClient.KeepAlive = true;
        FileInfo fi = new FileInfo(file);
        ftpClient.ContentLength = fi.Length;
        byte[] buffer = new byte[4097];
        int bytes = 0;
        int total_bytes = (int)fi.Length;
        System.IO.FileStream fs = fi.OpenRead();
        System.IO.Stream rs = ftpClient.GetRequestStream();
        while (total_bytes > 0)
        {
            bytes = fs.Read(buffer, 0, buffer.Length);
            rs.Write(buffer, 0, bytes);
            total_bytes = total_bytes - bytes;
        }
        fs.Close();
        rs.Close();

但是,当我删除读取权限时,它不再起作用。有问题的代码行是:

    System.IO.Stream rs = ftpClient.GetRequestStream();

错误是:

System.dll 中出现“System.Net.WebException”类型的未处理异常

附加信息:远程服务器返回错误:(550) 文件不可用(例如,找不到文件,无法访问)。

从理论上讲,上传没有读取权限的文件似乎没问题(也适用于 FileZilla)。实际上,它对我不起作用。有人可以给我这个案例的解决方案吗?

4

0 回答 0