1

現在CSVファイルを作成していて、そのファイルをftpで転送しています。これは正常に機能しています。ただし、csvファイルを保存したくないので、メモリに作成してからftpで転送します。

これは私の現在のコードです:

private void Csv()
    {             
        CsvExport eftExport = new CsvExport();
        eftExport.AddRow();
        eftExport["customer_reference"] = "Ref";           
        eftExport["landline"] = "01234567890";
        string url = "C:/Content/Cms/DD/";
        string fileName = "file.csv";
        eftExport.ExportToFile(url + fileName);
        this.FtpFile(url, fileName);
    }

    private void FtpFile(string url, string fileName)
    {
        FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://url.co.uk/" + fileName);
        request.Method = WebRequestMethods.Ftp.UploadFile;

        request.Credentials = new NetworkCredential ("Administrator", "pass");

        StreamReader sourceStream = new StreamReader(url + fileName);
        byte[] fileContents = Encoding.UTF8.GetBytes (sourceStream.ReadToEnd());
        sourceStream.Close();
        request.ContentLength = fileContents.Length;

        Stream requestStream = request.GetRequestStream();
        requestStream.Write(fileContents, 0, fileContents.Length);
        requestStream.Close();                       
    }

ただし、eftExport.ExportToFile(url + fileName);を実行する代わりに マシンに保存したくないですか?

4

3 に答える 3

0

これを使用して、バイト配列に入れます。

byte[] buffer = eftExport.ExportToBytes();

今:

requestStream.Write(buffer, 0, buffer.Length);
于 2012-07-25T12:40:49.183 に答える
0

ExportToBytes()クラスの関数を使用しますCsvExport

次にFtpFile()、バイト配列を受け入れるように変更し、ストリームリーダーを削除します

あなたはかなり少ないコードで終わるはずです:)

于 2012-07-25T12:39:34.673 に答える
0

あなたのCsvExport型がExportToStreamまたは同様のものを持っている場合は、単にそれを使用してストリームを作成し、その後 に書き込みますrequestStream

于 2012-07-25T12:39:52.800 に答える