我们在使用HttpHandler与Aspx后面的代码页面时遇到了文件创建的差异。
我们正在从sql server数据库的“Image”字段中读取保存的jpg / png图片作为字节数组,并在服务器中创建一个物理文件。
Aspx Page和Httphandler都使用下面粘贴的相同代码。
//Begin
int docID = Convert.ToInt32(Request.QueryString["DocID"]);
var docRow = documentDB.GetDocument(docID);
// Retrieve the physical directory path for the Uploads subdirectory
string destDir = Server.MapPath("../../Uploads").ToString() + "\\";
string strFileName = destDir + DateTime.Now.ToFileTime() + "_" + docRow.DocName.ToString();
FileStream fs = new FileStream(strFileName, FileMode.CreateNew, FileAccess.Write);
fs.Write(docRow.DocData, 0, docRow.DocData.Length);
fs.Flush();
fs.Close();
// End
创建文件后,只能在Aspx Code Behind中以jpg / png图像查看。 在HttpHandler的情况下,它不是有效的图像。
对此行为/缺少链接/解决步骤的任何想法都会有所帮助。
谢谢。
答案 0 :(得分:0)
最后隔离不同的步骤,确定问题是存储在数据库表中的数据。
消除此问题的方法是在上传文件期间,在服务器本地系统上创建物理文件。将此文件读入字节数组并存储到数据库表中。 (可能是编码问题)