-2

我有代码允许我访问服务器以进行 ftp 事务。我已经测试了连接并且它可以工作。问题是保存文件。为了帮助绘制图片,这是地址的设置方式。

ftp 服务器: ftp.MyMainDomain.com

路径登录 ftp 指向: www.another_website_Under_myDomain.com/gallery/images

当我测试连接时,ftp 服务器直接将我指向图像文件夹,我什至已经读出了子目录(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);
}
4

1 回答 1

0

在这一行:

ftpReqStream = PicAsStream;

您不是发送Stream到,ftp Server而是分配PicAsStreamftpReqStream然后关闭它。你的代码什么都不做。

像这样做:

创建一个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();
于 2013-07-19T02:44:34.277 回答