我使用下面的代碼示例將數據上傳到FTP服務器。WebClient.UploadData返回FTP的字節[0]
var streamXml = new MemoryStream();
var writer = new StreamWriter(streamXml);
writer.Write(stringaXml);
writer.Flush();
streamXml.Position = 0;
var response = client.UploadData(remoteFilePath, ReadFully(streamXml));
Logger.Info(client.Encoding.GetString(response));
public static byte[] ReadFully(Stream input)
{
var buffer = new byte[16 * 1024];
using (var ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
文件傳輸成功,但response
總是byte[0]
難道我失去了一些東西?
更新
我修改ReadFully
方法是這樣的:
public static byte[] ReadFully(Stream input)
{
using (MemoryStream ms = new MemoryStream())
{
input.CopyTo(ms);
return ms.ToArray();
}
}
我的小XML文件被成功保存到FTP服務器,但response
仍然byte[0]
的'WebClient'使用'FTPWebRequest'內部。它自然會處理數據連接端口,否則就沒用了。 –
它不會無用,因爲它有其他用途,顯然FTP只是一種協議。你怎麼知道它在內部使用FtpWebRequest?我檢查了源代碼,並沒有提及FtpWebRequest。在文檔中它只是說「這種方法使用STOR命令上傳FTP資源,對於HTTP資源,使用POST方法」 –
當然,它也支持其他協議。但它支持FTP,這就是要點。而不支持數據連接的FTP支持是無用的。 –