我有代码允许我访问服务器来执行ftp事务。我测试了连接,它的工作原理。问题是保存文件。为了帮助绘制图片,这就是地址的设置方式。
ftp服务器: ftp.MyMainDomain.com
路径登录ftp指向: www.another_website_Under_myDomain.com/gallery/images
当我测试连接时,ftp服务器直接将我固定到images文件夹,我甚至已经读出了子目录(ie ..images/subdirectory1, ..images/subdirectory2
)。
现在我需要能够将文件保存到每个文件夹中。我认为我所要做的就是添加subdir
我想要访问ftp_server uri
的末尾,但这不起作用。我该怎么办?
Uri ftpUri = new Uri((Ftp_Server_Address + "/" + SubDirectory+ "/"), UriKind.Absolute);
if (ftpUri.Scheme == Uri.UriSchemeFtp)// check ftp address,
{
DirRequest = (FtpWebRequest)FtpWebRequest.Create(ftpUri);
DirRequest.Method = ReqMethod;
DirRequest.Credentials = new NetworkCredential(FtpUserName, FtpPassword);
DirRequest.UsePassive = true;
DirRequest.UseBinary = true;
DirRequest.KeepAlive = false;
//change picture to stream
Stream PicAsStream = Pic.Bitmap_to_Stream(Pic.BitmapImage_to_Bitmap(Pic.Photo));
//send ftp with picture
Stream ftpReqStream = DirRequest.GetRequestStream();
ftpReqStream = PicAsStream;
ftpReqStream.Close();
SendFtpRequest(ReqMethod);
}
答案 0 :(得分:0)
在这一行:
ftpReqStream = PicAsStream;
您没有将Stream
发送给ftp Server
,但是您要将PicAsStream
分配给ftpReqStream
,然后关闭它。你的代码什么都不做。
这样做:
创建buffer
图像文件(不是流):
FileStream ImageFileStream = File.OpenRead(your_file_path_Here);
byte[] ImageBuffer = new byte[ImageFileStream.Length];
ImageFileStream.Read(ImageBuffer, 0, ImageBuffer.Length);
ImageFileStream.Close();
然后只需将其写入ftpReqStream
:
Stream ftpReqStream = DirRequest.GetRequestStream();
ftpReqStream.Write(ImageBuffer, 0, ImageBuffer.Length);
ftpReqStream.Close();