Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET中,什么会导致在使用Fx或chrome时图像处理失败,但在使用IE时成功?_C#_Asp.net_Image Processing_File Upload_Cross Browser - Fatal编程技术网

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是在服务器上执行的步骤,我不知道浏览器中的更改会如何影响它们 我不确定这是

我陷入了一种非同寻常的困境。我正在修改一个图像上传程序,我想我已经让它工作了。它需要:

  • 从客户端获取一个文件并将其上载到服务器。
  • 如果文件是图像,请对其执行大小调整操作。
  • 如果文件是图像,请创建缩略图。 当使用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);