我正在尝试使用swfupload将文件上传到服务器。照片上传在开发机器上运行得很好,但当我试图在生产服务器上检查时。存在CCD_ 1。检查的异常详细信息
`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) `
显示了这些细节。我检查了保存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);
这段代码在开发服务器上运行良好,但在生产环境中则不然。我不确定我在这里出了什么问题。/
是我唯一的猜测,因为微软使用作为目录路径。但为什么它会在dev服务器上工作。如果有人能解决这个问题。。
问题是您正试图保存到App_Data
文件夹中-该文件夹仅对实际代码可用。默认情况下,您不能写入它,也不能将其内容输出到您的网站。
App_Data
专门用于Data,例如XML&数据库文件-请参阅此处了解更多信息:MSDN App_Data文件夹
因此,即使您设法将文件保存到app_data
中,您也将无法显示它——您将收到未经授权的访问错误消息。
要修复,请更改此:
HttpContext.Current.Server.MapPath("~/App_Data/setP")
类似的东西
HttpContext.Current.Server.MapPath("~/uploadImages/setP")
本质上给自己一个不同的文件夹上传。
更新
根据评论,您似乎收到了500 internal server error
0消息。这通常是由于未设置对要保存到的文件夹的写入权限。更改它们以启用书写功能,您就可以继续了。不过,除非你真的必须,否则最好不要把它们保存在那里。。