我已经运行了这段代码,并且运行得非常好——直到几周前它决定它不想工作。
我不确定它为什么不起作用。
选择的图像被调整大小,然后上传到服务器。但是,该应用程序仅上传 4.380kb 的文件 - 无论我选择什么图像。这与我将其保存在哪个目录中无关。
FTP帐户肯定有权限,可以毫无问题地上传其他文件。因此,我认为上传图片的代码中一定有问题?
上传图片
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uploadLocation);
FileInfo toUpload = new FileInfo(fileToUpload);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(username, password);
Stream ftpStream = request.GetRequestStream();
Image image = Image.FromFile(fileToUpload);
image = Tools.ScaleImage(image, 500, 360);
image.Save(ftpStream, ImageFormat.Jpeg);
image.Save(@"C:\Users\User\Desktop\image.jpg", ImageFormat.Jpeg);
认为这可能与我的调整大小代码有关,我将文件的副本保存到桌面 - 文件完美保存并按预期保存。
但是,这里的代码如下所示:
比例图像
public static Image ScaleImage(Image image, int maxWidth, int maxHeight)
{
var ratioX = (double)maxWidth / image.Width;
var ratioY = (double)maxHeight / image.Height;
var ratio = Math.Min(ratioX, ratioY);
var newWidth = (int)(image.Width * ratio);
var newHeight = (int)(image.Height * ratio);
var newImage = new Bitmap(newWidth, newHeight);
Graphics.FromImage(newImage).DrawImage(image, 0, 0, newWidth, newHeight);
return newImage;
}
正如我所说,在同一个文件夹中使用完全相同的 FTP 凭据,我可以使用 ftp 流上传其他文件......不知道为什么这已经停止工作......
编辑:如果有帮助,我已经添加了上传文件的代码(使用相同的 ftp 设置)。这很好用 - 我怎样才能修改它来上传图片?
uploadfile:
FileStream file = File.OpenRead(fileToUpload);
int length = 1024;
byte[] buffer = new byte[length];
int bytesRead = 0;
totalToUpload = file.Length;
try
{
do
{
bytesRead = file.Read(buffer, 0, length);
ftpStream.Write(buffer, 0, bytesRead);
totalReadBytesCount += bytesRead;
var progress = totalReadBytesCount * 100.0 / totalToUpload;
backgroundWorker2.ReportProgress((int)progress);
}
while (bytesRead != 0);
file.Close();