我想动态生成文件并将该文件保存在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();
答案 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();
当然你还需要检查异常等等。我也没有检查你的其余代码,但如果它到目前为止工作正常,这就是你获得所需流的方式。