我的总体目标是从我的 ftp 中获取一个 zip 文件,即时打开它,读取 excel 文件中特定字段的内容(任何 zip 文件中都只有一个文件)。
到目前为止,我已经成功地使用 ftpwebrequest 连接到我的 ftp,并且我可以将文件下载到本地文件夹(不是我想要的工作流程,但我正在采取“婴儿步骤”的方法)
我发现在 Asp.Net 4.5 中引入了一个名为 ZipFile 的类,它似乎有一种打开和读取 zip 的方法,但我似乎无法让它接受我的 ftp 路径作为有效路径。
这是我要下载的内容。
var file = f.Element("FILE_PATH").Value;
string ftpHost = "ftp.com";
var URI = @"ftp://" + ftpHost + "/download/" + file;
var UserName = @"ftp@mysite.com";
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(URI);
ftp.UsePassive = true;
ftp.Credentials = new NetworkCredential(UserName, "Password");
ftp.UseBinary = true;
ftp.Method = WebRequestMethods.Ftp.DownloadFile;
FtpWebResponse ftpResponse = (FtpWebResponse)ftp.GetResponse();
string theFile = ftpResponse.ResponseUri.ToString();
Stream responseStream = ftpResponse.GetResponseStream();
FileStream writer = new FileStream(@"C:\websites\" + file, FileMode.Create);
long length = response.ContentLength;
int bufferSize = 2048;
int readCount;
byte[] buffer = new byte[2048];
readCount = responseStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
writer.Write(buffer, 0, readCount);
readCount = responseStream.Read(buffer, 0, bufferSize);
}
responseStream.Close();
ftpResponse.Close();
writer.Close();
我尝试执行以下操作来打开和阅读 zip。我把这个块放在创建字符串“theFile”的行之后,因为我不知道它有更好的归宿。这将返回路径无效的错误。
.... FtpWebResponse ftpResponse = (FtpWebResponse)ftp.GetResponse();
string theFile = ftpResponse.ResponseUri.ToString();
using (ZipArchive archive = ZipFile.OpenRead(theFile))
{
foreach (ZipArchiveEntry zfile in archive.Entries)
{
var FileName = zfile.Name;
}
}
我怎样才能完成从 ftp 打开和读取这个文件?