C# 在ASP.NET中,什么会导致在使用Fx或chrome时图像处理失败,但在使用IE时成功?
我陷入了一种非同寻常的困境。我正在修改一个图像上传程序,我想我已经让它工作了。它需要:C# 在ASP.NET中,什么会导致在使用Fx或chrome时图像处理失败,但在使用IE时成功?,c#,asp.net,image-processing,file-upload,cross-browser,C#,Asp.net,Image Processing,File Upload,Cross Browser,我陷入了一种非同寻常的困境。我正在修改一个图像上传程序,我想我已经让它工作了。它需要: 从客户端获取一个文件并将其上载到服务器。 如果文件是图像,请对其执行大小调整操作。 如果文件是图像,请创建缩略图。 当使用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
函数无法处理非IE浏览器发送的文件名
编辑:您的功能非常错误。换成
return imageExtensions.Contains(Path.GetExtension(file),
StringComparer.OrdinalIgnoreCase);
您应该调用
Path.Combine
。什么是Filename=hpf.Filename
。我正在编辑有点凌乱的现有代码。感谢路径。合并提示。什么是ImageUtilities.IsImage
?嗯。。。我不知道。如何检查路径?只需调用path.GetFileName
,如果路径在那里,它会将其剥离。你应该从头重写代码;这是非常糟糕的代码。我感谢你的建议。但你的语气很无礼。我在这里是因为我想改进我的代码。所以,你告诉我我的代码很差,需要从头开始重新编写,而不给我一个理由,这是相当令人恼火的。我并不是有意冒犯你。您说过这不是您的代码,您是从其他地方获得的。我相信您的代码即使对于“IAmNotAjpg.doc”也会返回true,除非我不理解包含的内容。
return imageExtensions.Contains(Path.GetExtension(file),
StringComparer.OrdinalIgnoreCase);