目标:
我们计划将图像从Project文件夹移动到C OR D驱动器(项目所在的其他文件夹。
我选择的方法
<asp:image ID="Image4" runat="server" ImageUrl ="TestPage.aspx?FileName=TestJPG.jpg"/>
TestPage.aspx.cs
try
{
// Read the file and convert it to Byte Array
string filePath = "C:\\images\\";
string filename = Request.QueryString["FileName"];
string contenttype = "image/" +
Path.GetExtension(Request.QueryString["FileName"].Replace(".","");
FileStream fs = new FileStream(filePath + filename,
FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
Byte[] bytes = br.ReadBytes((Int32)fs.Length);
br.Close();
fs.Close();
//Write the file to response Stream
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = contenttype;
Response.AddHeader("content-disposition", "attachment;filename=" + filename);
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
catch
{
}
问题
我从本地机器获取图像,并且在获取图像后必须启用一些按钮。这在本地机器上工作正常。但是在Web服务器中我能够获得图像但之后没有任何事情发生。按钮没有显示,并且在获取图像之前从下拉列表中选择的值也消失了。
在使用上述方法时,尝试了解本地服务器/ casini和IIS之间的区别?为什么在Web服务器中失败?
答案 0 :(得分:1)
IIS正在其自己的凭据下运行。可能它无法访问您的c:\images
文件夹。尝试授予该文件夹Everyone
的读取权限。
答案 1 :(得分:0)
您可能需要为IIS用户的c:\ images文件夹授予“读取”权限。根据您的服务器操作系统,查找以下用户之一:
NETWORKSERVICE
IIS_IUSRS
正如托文所指出的,您当前的代码很脆弱。因此,只要您对可以查看TestPage.aspx的任何人都可以访问您图片文件夹中的所有文件感到满意,那么您就可以了。