ASP.NET与C#中使用FTP上传图片时遭遇550错误的问题排查及解决请求
ASP.NET与C#中使用FTP上传图片时遭遇550错误的问题排查及解决请求
我最近在ASP.NET项目里实现图片上传到FTP服务器的功能时遇到了麻烦,想请各位帮忙分析一下问题所在。
我的代码在执行到这一段时总是抛出550错误:
using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(fileData, 0, fileData.Length); }
错误信息为:
System.Net.WebException: The remote server returned an error: (550) File unavailable (e.g., file not found, no access).
但我已经做了以下排查,这些点都没问题:
- 确认自己拥有该FTP服务器的完整操作权限
- 核对过FTP的用户名和密码完全正确
- 用FileZilla客户端可以正常连接服务器,并且能顺利上传文件,只有代码实现时会报错
我是第一次在.NET里做FTP相关的集成,实在搞不懂为什么会出现这种客户端正常但代码不行的情况,希望能得到大家的指导,帮我找出错误原因和解决方法。
以下是我的完整代码:
protected void btnUpload_Click(object sender, EventArgs e) { string uidvalue = Convert.ToString(HttpContext.Current.Session["uidvalue"]); if (uidvalue == null) uidvalue = "000"; if (fileUploadImage.HasFile) { string fileName = Path.GetFileName(fileUploadImage.FileName); string fileExtension = Path.GetExtension(fileName).ToLower(); int fileSize = fileUploadImage.PostedFile.ContentLength; // 验证文件类型 if (fileExtension != ".jpg" && fileExtension != ".jpeg" && fileExtension != ".png") { lblMessage.ForeColor = System.Drawing.Color.Red; lblMessage.Text = "Only .jpg, .jpeg and .png files are allowed."; return; } // 验证文件大小 (<= 2MB) if (fileSize > 2 * 1024 * 1024) { lblMessage.Text = "File size must be 2MB or less."; return; } try { byte[] fileData = fileUploadImage.FileBytes; string ftpUrl = "ftp://abc.com/images_c/" + fileName; string ftpUsername = "imguser"; string ftpPassword = "imguserQ123"; FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl); request.Credentials = new NetworkCredential(ftpUsername, ftpPassword); request.Method = WebRequestMethods.Ftp.UploadFile; request.ContentLength = fileData.Length; request.UseBinary = true; request.UsePassive = false; request.EnableSsl = false; request.KeepAlive = false; // 错误发生在此处 using (Stream requestStream = request.GetRequestStream()) { requestStream.Write(fileData, 0, fileData.Length); } using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) { lblMessage.ForeColor = System.Drawing.Color.Green; lblMessage.Text = "Upload successful: " + response.StatusDescription; } } catch (Exception ex) { lblMessage.Text = "Error: " + ex.Message; } } else { lblMessage.Text = "Please select a file."; } }
想请教大家,针对这个550错误,我可以从哪些方面进行调试?或者有没有什么常见的配置或代码问题会导致这种情况?
内容来源于stack exchange
相关产品推荐
相关产品推荐

