我写了这段代码来从FTP服务器下载文件。当程序尝试下载并保存文件时,我收到拒绝访问错误。我尝试使用管理员权限打开程序,但它给出了同样的错误。
WebClient request = new WebClient();
request.Credentials = new NetworkCredential(txtFTPuser.Text,
txtFTPpassword.Text);
/*List all directory files*/
byte[] fileData = request.DownloadData(fullDownloaPath);//dnoces.dreamhost.com
FileStream fi = File.Create(downloadTo);
fi.Write(fileData, 0, fileData.Length);
fi.Close();
MessageBox.Show("Completed!");
答案 0 :(得分:5)
您需要在致电File.Create
时提供完整的文件路径。现在,你正试图用你正在下载的文件覆盖你的“游戏”目录,这是不行的。
尝试将downloadTo
设置为类似C:\Users\agam\Desktop\Games\myfile.ext
的内容,而不是将其设置为C:\Users\agam\Desktop\Games\
。
顺便说一下,我鼓励您查看代码有两个明显的改进:
WebClient
的{{3}}方法,而不是DownloadData
,为您节省一些精力。DownloadFile
调用中包装WebClient的创建,以确保即使您的方法遇到异常也将其关闭。否则,using
。例如:
using (WebClient request = new WebClient())
{
request.Credentials = new NetworkCredential(txtFTPuser.Text,
txtFTPpassword.Text);
request.DownloadFile(fullDownloadPath, downloadTo);
MessageBox.Show("Completed!");
}
答案 1 :(得分:1)
调用文件创建时“downloadTo”的值是多少?如果“下载到”是游戏目录而不是该目标文件的完整路径,那么您可能会收到该错误消息,因为您试图用文件覆盖(可能是打开的)目录。
答案 2 :(得分:0)
如果您是从visual studio运行它,请尝试以管理员身份打开visual studio,或者使用提升的权限添加当前用户,您需要做两件事。