【发布时间】:2014-07-05 19:42:30
【问题描述】:
在我的 c# 应用程序中,我正在尝试使用 ftp 上传 png 图像,问题是我失去了透明度(透明区域变成黑色!)。
PS : 我发送的图像存储在 Sql Server 数据库中,它们在我的应用程序中看起来很好。这是我使用的代码:
private const int defultbuffersize = 1024 * 60;
public void UploadImage(Image image, string uri, string filename)
{
var request = WebRequest.Create(String.Format(@"{0}/{1}", uri, filename)) as FtpWebRequest;
if (request == null)
return;
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("userName", "password");
request.UsePassive = true;
request.UseBinary = true;
request.KeepAlive = true;
using (var writer = request.GetRequestStream())
{
var bytesData = image.ToByteArray();
var position = 0;
while (position < bytesData.Length)
{
var buffer = readData(bytesData, position);
writer.Write(buffer, 0, buffer.Length);
position += buffer.Length;
}
}
}
private static byte[] readData(byte[] bytesData, int position)
{
var buffer = new byte[defultbuffersize];
var lenght = position + defultbuffersize > bytesData.Length ?
bytesData.Length - position : defultbuffersize;
Array.Copy(bytesData.ToArray(), position, buffer, 0, lenght);
return buffer;
}
其他类中的扩展方法
public static byte[] ToByteArray(this Image image)
{
var stream = new MemoryStream();
image.Save(stream, ImageFormat.Jpeg);
return stream.ToArray();
}
提前致谢
【问题讨论】:
-
如果文件是逐字节复制,则问题不在FTP代码中。