ASP C#Force数据库中的下载文件返回限制大小为32 kb

时间:2013-11-25 04:25:34

标签: c# asp.net sybase

我在数据库中强制下载二进制文件(image / pdf)时遇到问题(我正在使用Syabase)。代码很好/工作,但如果我上传大文件(超过50 kb-它将返回32kb大小的文件,它返回损坏的文件。 如果我使用文件大小10-40 kb,格式为pdf或image,它可以正常工作。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using Sybase.Data.AseClient;
using Sybase.Data;
using System.IO;
using System.Configuration;
-----------------
conn.Open();
string myquery = "SELECT * FROM pen WHERE p_id=@p_id ";
AseCommand cmd = new AseCommand(myquery, conn);
cmd.Parameters.Add("@pen_id", AseDbType.VarChar).Value = pen_id;
AseDataReader dr = cmd.ExecuteReader();

if (dr.Read())
{
 Response.ClearContent();
 Response.ContentType = "application/pdf"; //hardcore for pdf 
 Response.AddHeader("Content-Disposition", "attachment;filename="+dr["file_name"]+"");
 Response.BinaryWrite((byte[])dr["the_file"]);
 Response.Flush();
 Response.End();
}

1 个答案:

答案 0 :(得分:0)

只是猜测......你可能想把你的阅读结构改为一段时间(dr.Read())而不是if(dr.Read())。

按原样,您只会读到数据读取器的缓冲区大小的末尾,但是每次数据读取器通过其缓冲区时都要继续读取,直到到达文件末尾。有意义吗?

将所有响应清除,结束和标题设置拉出while循环之外。