在c#中使用FTP下载图像文件,图像文件大小由固定大小数组限制
本文关键字:图像 小数 数组 文件大小 FTP 文件 下载 | 更新日期: 2023-09-27 18:17:51
我正在尝试使用ftp下载一个图像文件,在每个代码上,我已经查找了一个fixed sized array
正在使用(因为bufferSize
正在下面的代码中使用),我如何才能有效地解决这个问题,并在运行时调整缓冲区的大小,因为我正在处理显著大小的图像。
string[] ftpInfo = (string[])e.Argument;
string uri = String.Format("ftp://{0}/{1}/images/{2}", ftpInfo[1], ftpInfo[2], ftpInfo[5]);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.UseBinary = true;
request.Credentials = new NetworkCredential(ftpInfo[3], ftpInfo[4]);
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream ftpStream = response.GetResponseStream();
long cl = response.ContentLength;
int bufferSize = 4096; //Image file cannot be greater than 40 Kb
int readCount = 0;
byte[] buffer = new byte[bufferSize];
MemoryStream memStream = new MemoryStream();
readCount = ftpStream.Read(buffer, 0, bufferSize);
while (readCount > 0)
{
memStream.Write(buffer, 0, readCount);
readCount = ftpStream.Read(buffer, 0, bufferSize);
}
response.Close();
不会有任何溢出问题。
ftpStream.Read(buffer, 0, bufferSize);
确保你不会读取超过'bufferSize'。
读取一个大小为bufferSize的块,将其写入MemoryStream
并继续读取下一个块。
如果您担心写入MemoryStream
的数据大小,您可以使用另一个Stream
,例如FileStream
。