1

有効であると確認したPGPファイルがありますが、FTPアップロード中のある時点で破損します。取得すると、「これらのファイルにPGP情報が見つかりませんでした」というエラーメッセージが表示されます。

価値があるのは、PGPはバージョン6.5.8ですが、ファイルがアップロードされる前は問題ないように見えるので、これは重要ではないと思います。

ファイル転送のコードは次のとおりですが、見逃した設定やフィールドはありますか?

static void FTPUpload(string file)
    {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://ftp.itginc.com" + "/" + Path.GetFileName(file));

        request.UseBinary = true;
        request.Method = WebRequestMethods.Ftp.UploadFile;
        request.Credentials = new NetworkCredential(ApplicationSettings["Username"], ApplicationSettings["Password"]);

        StreamReader sr = new StreamReader(file);

        byte[] fileContents = Encoding.UTF8.GetBytes(sr.ReadToEnd());
        sr.Close();

        request.ContentLength = fileContents.Length;

        Stream requestStream = request.GetRequestStream();

        requestStream.Write(fileContents, 0, fileContents.Length);
        requestStream.Close();

        FtpWebResponse resp = (FtpWebResponse)request.GetResponse();

        Console.WriteLine("Upload file complete, status {0}", resp.StatusDescription);

        resp.Close();
        string[] filePaths= Directory.GetFiles(tempPath);
        foreach (string filePath in filePaths) 
            File.Delete(filePath);
    }

どんな助けでも大歓迎です

4

2 に答える 2

3

うーん、バイト配列に読み込まず、代わりに次のようにしてみてください

        using (var reader = File.Open(source, FileMode.Open))
        {
            var ftpStream = request.GetRequestStream();
            reader.CopyTo(ftpStream);
            ftpStream.Close();
        }
于 2011-09-08T20:47:08.653 に答える
2

PGPはデータをバイナリストリームにエンコードするため、StreamReaderとUTF8を介してデータを読み取ると、データが破損する可能性があります。明示的にバイナリモードを使用しているため、FTPがデータを変更する可能性はほとんどありません(ただし、UseBinaryはデフォルトでtrueであるため、設定では何も実行されません)。

于 2011-09-08T20:45:29.110 に答える