c# - 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;
}
提前致谢。
解决方案
推荐阅读
- python - 如何将登录的(经过身份验证的)用户分配给他们提交的表单数据?
- image-processing - 如果我将输入大小设置为 32,32 mnist 会发生什么
- json - 过滤 JSON 数据 arduino
- sql - SQL:了解 FULL OUTER JOIN 的工作原理
- fft - 如何通过 FFT 计算卷积和相关的组合?
- go - 在 Ubuntu 上作为 systemctl 服务运行时,Go 找不到文件
- intel-media-sdk - vainfo - iHD_drv_video.so 初始化失败
- c++ - 在特定的 Windows DLL 模块中分配内存
- python - 如何获取位于通过单击 tkinter 中不同窗口中的按钮出现的窗口中的 GUI 文本字段的参数?
- c - 创建名称取自变量值的新文件