如何使用FTPWEBREQUEST将文件上传到非默认目录
本文关键字:默认 何使用 FTPWEBREQUEST 文件 | 更新日期: 2023-09-27 18:02:47
当我试图将文件上传到服务器的非默认目录时,我遇到了一个问题。
当我使用"ftp://server01/autofile/test.zip"时,文件上传没有任何问题,因为autofile是默认目录。
但是当我使用下面的代码时,我得到一个异常,它说"远程服务器返回一个错误:(550)文件不可用(例如,文件未找到,无法访问)。"。下面是我使用的代码:
string inputfilepath = "E:''Test''test.ZIP";
string ftpfullpath = "ftp://server01/../bcp/ftp/ftpsftiu/test.ZIP";
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath);
ftp.Method = WebRequestMethods.Ftp.UploadFile;
ftp.Credentials = new NetworkCredential("Username", "password");
ftp.UsePassive = true;
ftp.KeepAlive = true;
ftp.UseBinary = true;
FileStream fs = File.OpenRead(inputfilepath);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
Stream reqStream = ftp.GetRequestStream();
但是我可以通过windows的Run Command打开上述非默认目录路径(ftp://server01/../bcp/ftp/ftpsftiu/test.ZIP)
如何通过c#代码将我的文件上传到服务器的非默认目录?请帮我解决这个问题。
提前感谢!!
与问候,Shadu
如果我在服务器(//server//)后面放另一个斜杠,它对我有效。我(还)完全限定了输出路径名。静态的GetCread()是对一个自建类的方法调用。
的例子:
static void Main(string[] args)
{
string strSystem = "MAPS";
FtpWebRequest req = (FtpWebRequest)WebRequest.Create("ftp://" + strSystem +"//export/home/hinest/science/trans/fred.txt");
req.Credentials = CGetCred.GetCred(strSystem);
req.Method = WebRequestMethods.Ftp.UploadFile;
FtpWebResponse resp = (FtpWebResponse)req.GetResponse();
StreamWriter fileOut = new StreamWriter(req.GetRequestStream());
StreamReader fileIn = new StreamReader(@"c:'science'"+strSystem+".txt");
while (!fileIn.EndOfStream)
{
fileOut.WriteLine(fileIn.ReadLine());
}
fileIn.Close();
fileOut.Close();
resp.Close();
}