C# 无效URI:无法使用文件上载到ftp来确定URI的格式
我已经尝试过将文件上传到ftp服务器的代码,但是出现了这个错误。我不知道我哪里出错了。 我尝试了各种方法来改变我的ftpurl格式,但仍然没有成功 代码:C# 无效URI:无法使用文件上载到ftp来确定URI的格式,c#,ftp,C#,Ftp,我已经尝试过将文件上传到ftp服务器的代码,但是出现了这个错误。我不知道我哪里出错了。 我尝试了各种方法来改变我的ftpurl格式,但仍然没有成功 代码: 错误在ftp url中。您没有包括文件名。这样写: private static void UploadFileToFTP(string source) { String sourcefilepath = "C:\\Users\\Desktop\\LUVS\\a.xml"; String f
错误在ftp url中。您没有包括文件名。这样写:
private static void UploadFileToFTP(string source)
{
String sourcefilepath = "C:\\Users\\Desktop\\LUVS\\a.xml";
String ftpurl = "100.100.0.35"; // e.g. fake IDs
String ftpusername = "ftp"; // e.g. fake username
String ftppassword = "1now"; // e.g. fake password
try
{
string filename = Path.GetFileName(sourcefilepath);
string ftpfullpath = "ftp://" + ftpurl + "/" + filename ;
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath);
ftp.Credentials = new NetworkCredential(ftpusername, ftppassword);
ftp.KeepAlive = true;
ftp.UseBinary = true;
ftp.Method = WebRequestMethods.Ftp.UploadFile;
FileStream fs = File.OpenRead(sourcefilepath); // here, use sourcefilepath insted of source.
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
Stream ftpstream = ftp.GetRequestStream();
ftpstream.Write(buffer, 0, buffer.Length);
ftpstream.Close();
}
catch (Exception ex)
{
throw ex;
}
}
Create
方法似乎在WebRequest
上,而不是在FtpWebRequest
上。而WebRequest
需要根据URI的格式从URI中确定要创建哪个子对象(在本例中为FtpWebRequest
)。但您的URI只是一个空地址:
"100.100.0.35"
如果预先编写协议,它应该能够从URI中确定需要什么:
"ftp://100.100.0.35"
哪一行抛出错误,该行错误URI的运行时值是多少?(提示:如果你不丢弃堆栈跟踪,那么确定这些事情会容易得多。你的异常处理程序没有做任何事情,但正在丢弃有用的信息。只需完全以当前形式丢弃异常处理程序,并让原始异常被丢弃即可。)嗨,David,它给了我这一行的错误
ftpWebRequestFTP=(FtpWebRequest)FtpWebRequest.Create(ftpfullpath)代码>错误很明显:“100.100.0.35”不是URI。您缺少一个方案,在本例中为ftp://
。我尝试了这个方案,但它在这一行的路径异常中提供了非法字符FileStream fs=File.OpenRead(源代码)代码>-一个请求针对一个文件。您不能使用*
,您必须按代码循环浏览所有文件。请参见.string ftpfullpath=ftpurl+“/”+文件名;我不明白“/”文件名,它只是ftp的附加文件,这个文件名是从哪里来的,但仍然是相同的错误。检查我的答案。现在应该可以了。忘了添加协议ftp
hey ricky,现在我在这里得到了错误FileStream fs=File.OpenRead(源代码)
Hi David我已经尝试过了,但是在这一行的路径异常中出现了一个错误FileStream fs=File.OpenRead(源代码)
@shruthi:发生这种情况时,source
的值是多少?您需要检查这些运行时值,并至少进行一些调试。
"ftp://100.100.0.35"