文件以二进制byte[]被存储在数据库上,格式是img。前台使用extjs的ajax调用后台函数, |
|
2分 |
Response.Buffer = true; 这个不要设置吧。
|
我去掉了,仍然是那个错误啊!有些帖子说加上。。。 |
|
2分 |
调试一下 http 消息,看看你的“前台”一共发出了多少次请求。
|
在开头加上 |
|
我用firebug看了一下,就一个消息啊。就是在控制台看到的 。这段js代码就调用了一层,没有更多的地方啊。。。 |
|
我试过,仍然报错!。。。 |
|
16分 |
首先你要明白response是对响应报文进行封装的对象,里面的大部分属性都是设置http响应报文报文头,它必须遵守http协议报文头的规范,报文体就是你要发送的数据.你要明白了这个道理就不会去这么乱写 |
我想也是 报头写的有问题,我也是差的网络,看来是学艺不精啊 我再查查! HttpRequest hrRequest = context.Request; HttpResponse hrResponse = context.Response; string sDocPath = System.Web.HttpContext.Current.Request.MapPath("~/" + hrRequest["F_DOC_PATH"])+hrRequest["F_DOC_NAME"]; if (!File.Exists(@sDocPath)) hrResponse.Write("[{"success":"false","exception":"文件已被删除或不存在!"}]"); FileInfo fileInfo = new FileInfo(@sDocPath); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ClearContent();// HttpContext.Current.Response.ClearHeaders(); HttpContext.Current.Response.Buffer = false; //通知http前台是下载而不是打开 HttpContext.Current.Response.ContentType = "application/octet-stream;charset=gb2321"; //HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(hrRequest["F_DOC_NAME"], System.Text.Encoding.UTF8)); HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + hrRequest["F_DOC_NAME"]); HttpContext.Current.Response.AddHeader("Content-Length", fileInfo.Length.ToString()); //HttpContext.Current.Response.AddHeader("Content-Transfer-Encoding", "binary"); HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8"); HttpContext.Current.Response.WriteFile(fileInfo.FullName); HttpContext.Current.Response.Write("[{"success":true}]"); HttpContext.Current.Response.Flush(); HttpContext.Current.Response.End(); /pre> 看来我要学习学习报头了 |