C# 无效URI:无法使用文件上载到ftp来确定URI的格式

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服务器的代码,但是出现了这个错误。我不知道我哪里出错了。 我尝试了各种方法来改变我的ftpurl格式,但仍然没有成功

代码:


错误在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"