Я в довольно необычном рассоле. Я изменяю загрузчик изображений, и я думал, что он работает. Нужно было:
- взять файл с клиента и загрузить его на сервер.
- Если файл является изображением, выполните над ним операции по изменению размера.
- Если файл является изображением, создайте миниатюру.
То, что у меня есть, прекрасно работает при загрузке изображений с помощью Internet Explorer 8. Но когда я загружаю изображения с помощью Chrome или Firefox3. +, Изображение загружается, но шаги 2 и 3 не выполняются. Я не получаю никаких ошибок сервера или чего-то еще. Поскольку шаги 2 и 3 выполняются на сервере, я понятия не имею, как их может повлиять изменение в браузере.
Я не уверен, имеет ли это какое-либо отношение к моей проверке, является ли файл изображением или нет. Но, ради тщательности, вот код, который я использую:
try
{
string Filename = FileSystemUtilities.CleanupFilename(Path.GetFileName(hpf.FileName));
Filename = hpf.FileName;
string FileToSave = DestDir + Path.DirectorySeparatorChar + Path.GetFileName(Filename);
hpf.SaveAs(FileToSave);
bool IsImageFileType = ImageUtilities.IsImage(Filename, imageExtensions);
// below does not seem to execute when using non ie browser
// everything is smooth sailing when using ie.
if (IsImageFileType)
{
ImageUtilities.ResizeImageIfNecessary(FileToSave, mainMaxWidth, mainMaxHeight);
ImageUtilities.CreateThumbnail(FileToSave, thumbMaxWidth, thumbMaxHeight);
}
ValidOperation++;
sb.AppendFormat("{0} uploaded successfully<br/>", Filename);
}
Есть мысли? Почему код на стороне сервера ведет себя по-разному в зависимости от браузера?
Редактировать: ImageUtilities.IsImage ()
public static bool IsImage(string file, string[] imageExtensions)
{
file = Path.GetFullPath(file);
if (File.Exists(file))
{
string CurrentFileExtension = Path.GetExtension(file);
return imageExtensions.Count(x => x == CurrentFileExtension) > 0 ? true : false;
}
else
{
return false; //file doesn't exist
}
}