【发布时间】:2013-07-01 04:26:38
【问题描述】:
我正在尝试使用 swfupload 将文件上传到服务器。照片上传在开发机器上工作得非常好,但是当我试图在生产服务器上检查它时。有500 internal server error。检查异常详细信息
`Stack trace: at System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams)
at System.Drawing.Image.Save(String filename, ImageFormat format)
at ImageryDataAccess.SaveFullSizeImage(Byte[] ImageData)
at ImageryDataAccess.SaveUserImage(Byte[] ImageData, Guid UserId)
at Photos.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) `
显示了这个细节。我检查了函数 save fullsizeimage 似乎只有一个嫌疑人,那就是
string fileName=ImageName.ToString() + ".JPEG";
string App_datapath = HttpContext.Current.Server.MapPath("~/App_Data/setP");
bmp.Save(App_datapath+"/" +fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
此代码在开发服务器上运行良好,但在生产服务器上运行不正常。我不确定我在这里出了什么问题。 / 是我唯一的猜测,因为微软使用\ 作为目录路径。但同样为什么它会在开发服务器上运行。如果有人能解决这个问题..
【问题讨论】:
-
这条路径是否存在?附带说明一下,将用户上传的文件存储在根目录之外可能更安全,这样如果有人设法上传恶意文件,就无法在线执行
-
是的,路径存在,你是对的,我必须这样做,但现在我必须完成这项工作..
-
@Bartdude - 不是真的 - 他的上传脚本应该只允许人们上传某些文件扩展名。
标签: asp.net .net gdi+ absolute-path server.mappath