首页 新闻 会员 周边 捐助

C# FTP 上传文件 异常[ 利用程式可FTP上创建文件路径,无法上传文件 ]

0
悬赏园豆:20 [待解决问题]

 近期在处理FTP上传文件时遇到个550异常!

 FTP是由他人提供的,我需要通过他提供的FTP上传文件!

异常现象:

   1.我直接在FTP 创建文件夹时会出现一下异常提示:                                                          

  2.但是我利用c# 代码却可以在FTP服务器上创建文件路径!

  3.我能直接将我的本地文件资料复制到服务器!

  4.我利用自己的c#程序却不能上传到对方的服务器!

      

  5.在遇到以上异常后我便在我自己的本机上搭建了一个FTP ,然而我直接上传到我自己的路径上却没一点问题,文件路径的创建、上传文件都毫无异常!

 第一步想到的是对方的服务器是否 有什么限制 比如文件的上传权限之类或是有防火墙阻挡!

  以上只是个人一个猜测,还望各位能提供意见!

 

代码如下:

 文件上传:

      

 

        
        #region  文件上上传
/// <summary> /// 文件上上传 /// </summary> /// <param name="fileinfo"></param>源文件路径 /// <param name="targetDir"></param>目标目录 /// <param name="hostname"></param> 主机名 /// <param name="username"></param> 用户名 /// <param name="password"></param> 密码 /// public void UploadFile(FileInfo fileinfo, string targetDir, string hostname, string username, string password) { //1. check target string target; if (targetDir.Trim() == "") { return; } target = Guid.NewGuid().ToString(); string URI =hostname + targetDir + target; ///WebClient webcl = new WebClient(); System.Net.FtpWebRequest ftp = GetRequest(URI, username, password); //设置FTP命令 ftp.Method = System.Net.WebRequestMethods.Ftp.UploadFile; ftp.UseBinary = true; ftp.UsePassive = true; //告诉ftp文件大小 ftp.ContentLength = fileinfo.Length; const int BufferSize = 4096 * 4096; byte[] content = new byte[BufferSize - 1 + 1]; int dataRead; //上传文件内容 using (FileStream fs = fileinfo.OpenRead()) { try { using (Stream rs = ftp.GetRequestStream()) { do { dataRead = fs.Read(content, 0, BufferSize); rs.Write(content, 0, dataRead); } while (!(dataRead < BufferSize)); rs.Close(); WriteLog("upload sucess!"); txt_log.Text = "\r\n\n" + DateTime.Now.ToString() + ": " + "upload sucess!\r\n\n" + txt_log.Text; } } catch (Exception ex) { WriteLog(ex.Message); txt_log.Text = "\r\n\n" + DateTime.Now.ToString() + ": 异常警告:" + ex.Message + "\r\n\n" + txt_log.Text; } finally { fs.Close(); } } ftp = null; //设置FTP命令 ftp = GetRequest(URI, username, password); ftp.Method = System.Net.WebRequestMethods.Ftp.Rename; //改名 ftp.RenameTo = fileinfo.Name; try { ftp.GetResponse(); } catch (Exception ex) { ftp = GetRequest(URI, username, password); // ftp.Method = System.Net.WebRequestMethods.Ftp.DeleteFile; //删除 ftp.GetResponse(); WriteLog(ex.Message); WriteLog(ex.Message); txt_log.Text = "\r\n\n" + DateTime.Now.ToString() + ": "+ ex.Message + "\r\n\n" + txt_log.Text; } finally { fileinfo.Delete();//删除原件 // WriteLog("file delete!"); } ftp = null; } private static FtpWebRequest GetRequest(string URI, string username, string password) { FtpWebRequest result = (FtpWebRequest)FtpWebRequest.Create(URI); result.Credentials = new System.Net.NetworkCredential(username, password); result.KeepAlive = false; return result; } #endregion

 

 

 

   

 

 

 

暮色纯香的主页 暮色纯香 | 初学一级 | 园豆:63
提问于:2014-07-16 09:21
< >
分享
所有回答(4)
0

550 Access Denied —— 用户名、密码错误?

Launcher | 园豆:45050 (高人七级) | 2014-07-16 09:24

用户名 和 密码是没问题的!必经在创建文件夹路径这个操作上是已经成功了,但无法写入文件!

支持(0) 反对(0) 暮色纯香 | 园豆:63 (初学一级) | 2014-07-16 15:30

@暮色纯香: 我假设你的 FTP 服务器部署在 A 机器,那么请你现在在 B 机器的资源管理器中打开此 FTP 服务器,输入用户名和密码后,看看你能否创建新文件。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-07-16 15:39

@Launcher: 不可以创建行的新文件,会有550Access Denied 异常!

支持(0) 反对(0) 暮色纯香 | 园豆:63 (初学一级) | 2014-07-16 15:59

@暮色纯香: 权限没设对,当前用户不具有写权限。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-07-16 16:06

@Launcher: 我也是这样想的,但我借助了FileZilla去上传时 却能正常上传!

另外就是有一点不懂得还望指点一下! 

  我直接 “复制文件”   时能将其复制到FTP上, 那么这个操作和我的 “新建文件”  这两个有什么本质上的区别! 

支持(0) 反对(0) 暮色纯香 | 园豆:63 (初学一级) | 2014-07-16 16:30

@暮色纯香: 你能截图给我看看你如何在资源管理器中登录、新建、粘贴的么?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2014-07-16 16:37
0

我只想吐槽下楼主的注释  有你这么写的吗..

丫的 | 园豆:1575 (小虾三级) | 2014-07-16 10:36

谢谢!提供意见!在下学艺不精,以后改正!

支持(0) 反对(0) 暮色纯香 | 园豆:63 (初学一级) | 2014-07-16 15:31
0

Access Denied 肯定就是权限的问题了~~用户没有权限在目录创建

一起2 | 园豆:202 (菜鸟二级) | 2014-07-16 11:04

谢谢 你提供建议!

支持(1) 反对(0) 暮色纯香 | 园豆:63 (初学一级) | 2014-07-16 16:36
0

访问ftp的用户,要有创建,删除,写入,读取的权限。

wolfy | 园豆:2636 (老鸟四级) | 2014-07-16 13:06

   我用该用户的情况下  采用FileZilla 去上传文件是能传的!对于这个现象有点不太明白!

  

 

支持(0) 反对(0) 暮色纯香 | 园豆:63 (初学一级) | 2014-07-16 15:57

@暮色纯香: 或者给ftp对应的根目录 给个everyone权限试一试

支持(0) 反对(0) wolfy | 园豆:2636 (老鸟四级) | 2014-07-17 13:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册