首页 > 解决方案 > C# MVC:上传图像在本地工作,暂存失败:GDI+ 中发生一般错误

问题描述

我有一个包含文件上传控件的表单。在本地测试时,我成功地将文件上传到我的代码库中的某个位置。但是,这在我们的暂存环境中不起作用,我只有这个一般错误:

GDI+ 中出现一般错误。

在 System.Drawing.Image.Save(字符串文件名,ImageCodecInfo 编码器,EncoderParameters 编码器参数)

我已确认暂存服务器上存在目标文件夹并且它具有写入权限。我正在测试的图像只有 200kb,所以它并没有最大化文件大小。

private string SaveAssetFile(int assetId, HttpPostedFileBase assetFile, out string thumbnailPath)
    {
        string folderName = "/Content/Assets";
        string extension = "";
        string fileName = "";
        string thumbnailName = string.Format("asset{0}_thumb.jpg", assetId).ToLower();
        string fullPath = "";
        var format = ImageFormat.Jpeg;

        try
        {
            if (assetFile.ContentType.Contains("image"))
            {
                extension = assetFile.ContentType.Replace("image/", "");
                fileName = string.Format("asset{0}.{1}", assetId, extension).ToLower();
                fullPath = Path.Combine(Server.MapPath("~" + folderName), fileName);

                using (Image imgOriginal = Image.FromStream(assetFile.InputStream))
                {
                    switch (extension)
                    {
                        case "jpg":
                        case "jpeg":
                            format = ImageFormat.Jpeg;
                            break;
                        case "png":
                            format = ImageFormat.Png;
                            break;
                        case "gif":
                            format = ImageFormat.Gif;
                            break;
                        case "bmp":
                            format = ImageFormat.Bmp;
                            break;
                        default:
                            format = ImageFormat.Jpeg;
                            break;
                    }

                    imgOriginal.Save(fullPath, format);

                    // Do other stuff here
                }

                thumbnailPath = folderName + "/" + thumbnailName;

                return folderName + "/" + fileName;
            }
            else if (assetFile.ContentType.Contains("video"))
            {
                // Do other stuff here
            }
            else if (assetFile.ContentType.Contains("pdf"))
            {
                // Do other stuff here
            }
        }
        catch(Exception ex)
        {
            // Error handling here

            throw ex;
        }

        thumbnailPath = null;
        return null;
    }

提前致谢。

标签: c#model-view-controllerimage-uploading

解决方案


推荐阅读