如何直接在FTP文件夹上创建和保存文件中的文件?

时间:2014-07-14 10:20:20

标签: c# csv ftp c#-3.0 ftpwebrequest

我想动态生成文件并将该文件保存在FTP文件夹位置

我尝试过以下。 我不想在本地保存文件,然后将其上传到FTP位置。

我有流,想要使用该流在ftp上创建文件。

我该怎么办?

  FtpWebRequest requestFileUpload = (FtpWebRequest)WebRequest.Create("ftp://" +ftpServerIP+ "/" + remoteDir);
                    requestFileUpload.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
                    requestFileUpload.Method = WebRequestMethods.Ftp.UploadFile;

                    // Copy the contents of the file to the request stream.
                    StreamReader sourceStream = new StreamReader(FILEDATA);
                    //FILEDATA is nothing but string
                    byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
                    sourceStream.Close();
                    requestFileUpload.ContentLength = fileContents.Length;

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

                    FtpWebResponse response = (FtpWebResponse)requestFileUpload.GetResponse();


                    response.Close();

1 个答案:

答案 0 :(得分:1)

我并非100%确定我理解正确。

您获得了名为response的FTPWebResponse对象。您可以为FTPWebResponse对象调用GetResponseStream()函数。此功能将为您提供可用于进行实际FTP传输的流。 不只是编写一个从sourceStream StreamReader复制到Stream的复制功能。

示例:

FtpWebResponse response = (FtpWebResponse)requestFileUpload.GetResponse();

Stream myFTPStream = response.GetResponseStream();

//copy data into stream

response.Close();

当然你还需要检查异常等等。我也没有检查你的其余代码,但如果它到目前为止工作正常,这就是你获得所需流的方式。