回答
This看起来不错。
如何知道文件是否成功上传? – Illep
让我困惑的是为什么设置FTP地址时包含文件名:... WebRequest.Create(“ftp://www.contoso.com/test.htm”)。当我连接到FTP站点时,我不在寻找特定的文件;我想在那里发送一个。那么什么是“test.htm”?这是FTP站点上的文件吗?我发送后会发送的文件是? 我的问题是,当我到达我们去的部分Request.GetRequestStream()时,如果我只是提供我的ftp地址,就会炸毁我:“ftp://127.0.0.1/”,说它无效。如果我提供一个文件名,我会得到一个550错误(文件不可用)。 –
所以我知道地址必须是一个看起来像这样的有效URI(在这里减去多余的空格):“f t p://127.0.0.1/mytestfile.txt”。如果你离开文件名,它会说Uri不适合这种操作。文件名是你想在远端调用它的名字,它基本上设置了传输。我得到的550错误是由于授权问题导致的,无论是在IIS中还是在文件系统级别。我可以通过使用FileZilla FTP客户端访问该站点来找到这些信息,该客户端向您展示了谈话内容,其中包含所有线索。 –
正如我在评论中发布的,你可以看到这个link关于如何上传文件到FTP服务器的示例。从链接
代码:
using System;
using System.IO;
using System.Net;
using System.Text;
namespace Examples.System.Net
{
public class WebRequestGetExample
{
public static void Main()
{
// Get the object used to communicate with the server.
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/test.htm");
request.Method = WebRequestMethods.Ftp.UploadFile;
// This example assumes the FTP site uses anonymous logon.
request.Credentials = new NetworkCredential ("anonymous","[email protected]");
// Copy the contents of the file to the request stream.
StreamReader sourceStream = new StreamReader("testfile.txt");
byte [] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
response.Close();
}
}
}
}
要验证该文件正确上传,您可以检查的响应,它有状态说明和的StatusCode属性。
或者,您可以再次调用FTP服务器,在此设置方法request.Method = WebRequestMethods.Ftp.ListDirectory;
。这将返回FTP服务器上的文件列表。
当然,这不会验证文件是否正确上传,只是存在一个同名的文件。
我希望这能回答你的问题。
我可以打印结果到“控制台”('request.Method = WebRequestMethods.Ftp.ListDirectory') – Illep
否方法是请求的属性,当您设置它并获取ResponseStream时,您将得到一个文件名列表。 –
@Illep,看看这个链接http://social.msdn.microsoft。com/Forums/en-US/ncl/thread/079fb811-3c55-4959-85c4-677e4b20bea3它显示如何获取FTP服务器上的文件列表。 –
你也可以试试这个代码,也适用于其他文件扩展名。
string ftpUrl = "ftp://server//foldername/fileName.ext";
string fileToUploaded = "c:/fileName.ext";
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl);
request.Proxy = new WebProxy(); //-----Proxy bypassing(The requested FTP command is not supported when using HTTP proxy)
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
using (var requestStream = request.GetRequestStream())
{
using (var input = File.OpenRead(fileToBeUploaded))
{
input.CopyTo(requestStream);
}
}
尝试流式传输数据,而不是单独加载到内存中。另外using
声明有助于完美地部署资源。
- 1. 发送.txt文件到ftp
- 2. 加密文件发布到FTP站点
- 3. 批量文件上传.txt到FTP
- 4. 上传.txt文件到FTP服务器
- 5. 使用C#上传文件到FTP#
- 6. Maven ftp站点插件
- 7. 使用SFTP连接到FTP站点并下载文件
- 8. 使用SQL将CSV文件导出到FTP站点
- 9. 上传文件到FTP C#
- 10. 创建FTP站点
- 11. 在FTP站点上合并CSV文件
- 12. 到文件(FTP)
- 13. 使用C#编写和读取来自FTP的.txt文件
- 14. 批处理文件将文本文件复制到FTP站点
- 15. 如何使用ncftp或ftp使用FTP站点中的目录中的文件列表创建文件?
- 16. FTP:上传文件到FTP和验证
- 17. Maven站点部署使用ftp
- 18. Ftp上传的文件被损坏,除非“txt”文件c#
- 19. 自动将文本文件上传到FTP站点
- 20. 如何使用存储过程从FTP站点获取文件
- 21. 上传使用SFTP从FTP站点下载文件
- 22. 使用php cURL移动ftp站点上的文件
- 23. 我使用Powershell从ftp站点下载新文件
- 24. 使用Webclient和PowerShell删除FTP站点上的文件
- 25. 将.txt文件从ftp保存到文档文件夹iphone
- 26. 在C#中使用FTP移动文件
- 27. 在C#中使用ftp发送文件
- 28. 使用git-ftp将子文件夹推送到ftp
- 29. 使用FTP客户端发送文件到FTP服务器
- 30. 是否可以使用PHP将文件从FTP上传到FTP
谷歌的第一个结果http://msdn.microsoft.com/en-us/library/ms229715.aspx,你有什么尝试? –
有没有办法让我知道文件是否成功上传? – Illep
更多然后检查它是否存在,如果大小相应,你有几种检查方法是否正确。您可以再次下载并检查它是否具有相同的校验和。 – albertjan