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

使用ExportToBytes()您的CsvExport班级的功能。

然后将您更改FtpFile()为接受字节数组并删除流阅读器

你最终应该得到更少的代码:)

于 2012-07-25T12:39:34.673 回答
0

如果您的CsvExport类型有一个ExportToStream或类似的,只需使用它创建您随后写入的流requestStream

于 2012-07-25T12:39:52.800 回答
0

使用它,但它进入一个字节数组:

byte[] buffer = eftExport.ExportToBytes();

现在:

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