我需要将一个文件通过FTP传输到一个目录。在FTP中,我必须使用目标文件夹中的文件来创建连接,所以我使用.Net手动将Blank.dat放在服务器上。我检查了访问权限(ls -l),结果是-rw-r--r--。但是当我尝试连接到FTP文件夹时,我从服务器得到了:"The remote server returned an error:(553) File name not allowed“。我所做的研究表明,这可能是由于权限问题引起的,但正如我所说的,我有查看文件的权限,并且可以从文件夹运行ls。还有什么其他原因会导致这个问题,有没有一种方法可以连接到文件夹而不必指定文件?
byte[] buffer;
Stream reqStream;
FileStream stream;
FtpWebResponse response;
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(string.Format("ftp://{0}/{1}", SRV, DIR)));
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(UID, PASS);
request.UseBinary = true;
request.Timeout = 60000 * 2;
for (int fl = 0; fl < files.Length; fl++)
{
request.KeepAlive = (files.Length != fl);
stream = File.OpenRead(Path.Combine(dir, files[fl]));
reqStream = request.GetRequestStream();
buffer = new byte[4096 * 2];
int nRead = 0;
while ((nRead = stream.Read(buffer, 0, buffer.Length)) != 0)
{
reqStream.Write(buffer, 0, nRead);
}
stream.Close();
reqStream.Close();
response = (FtpWebResponse)request.GetResponse();
response.Close();
}
发布于 2021-06-21 22:43:44
与之相关的人。
我被这个问题困扰了很长一段时间。我尝试将一个文件上传到我的web服务器上,如下所示:
,所以我使用:
FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create($@"ftp://order.mydomain.com//uploads/{FileName}");
在多次尝试并得到这个553错误后,我发现我必须使请求指向主域而不是子域,并将子域作为子文件夹(这通常是在创建
FtpWebRequest ftpReq = (FtpWebRequest)WebRequest.Create($@"ftp://www.mydomain.com//order.mydomain.com//uploads/{FileName}");
它终于成功了。
https://stackoverflow.com/questions/9418404
复制相似问题