0

FTP サーバー上にある画像を編集したいと考えています。私はSSH.netを使用しています。ここに私のコードがあります:

using (var client = new SftpClient(ftpUploadPath, ftpPort, ftpUser, ftpPassword))
{
    client.Connect();
    using (var stream = new MemoryStream())
    {
        client.DownloadFile(fileName, stream);
        using (var img = Image.FromStream(stream, true))
        {
            img.RotateFlip(RotateFlipType.Rotate90FlipNone);
            img.Save(stream, ImageFormat.Jpeg);
            client.UploadFile(stream, fileName);
        }
    }
}

FTP サーバー上のイメージを 0 オクテット イメージで消去する「client.UploadFile」まではすべて正しいです。FTP サーバー上の画像は .jpg です。私はすでに FileStream で「client.UploadFile」を使用しており、正常に動作します。しかし、この場合、IIS サーバーにファイルを保存したくないので、ファイルを変更してから FTP サーバーにアップロードします... 何か考えはありますか?

4

2 に答える 2

1
        img.Save(stream, ImageFormat.Jpeg);

        stream.Position = 0; // Reset the stream to the beginning before switching to reading it

        client.UploadFile(stream, fileName);
于 2016-06-08T13:43:47.260 に答える
0

上で述べたように、noelicus と Thorsten のおかげで、ここに解決策があります。

using (var client = new SftpClient(ftpUploadPath, ftpPort, ftpUser, ftpPassword))
{
    client.Connect();
    using (var stream = new MemoryStream())
    {
        client.DownloadFile(fileName, stream);
        using (var img = Image.FromStream(stream, true))
        {
            img.RotateFlip(RotateFlipType.Rotate90FlipNone);

            using (var newStream = new MemoryStream())
            {
                img.Save(newStream, ImageFormat.Jpeg);
                newStream.Position = 0;
                client.UploadFile(newStream, item);
            }
        }
    }
}
于 2016-06-08T14:01:41.817 に答える