1,对于JSON这个东西还没接触 有点疑惑.如果我的数据来源于数据库,JSON怎么去动态绑定数据库数据?我看到他们的JSON的格式后 感觉都是定义好的一样?像是写死了.2,上传文件已GUID+后缀名命名了文件名,下载的时候我希望下载原来的文件名
数据库有原来文件夹的完整限定名称 如:资料.rar上传文件重命名后的路径为:d:\资料文件\GUID.rar...希望点击下载的时候.d:\资料文件\资料的rar.
下载 context.Response.ContentType = "text/plain";
string id = context.Request["id"].ToString();//获取资源的编号
System.IO.Stream iStream = null;
byte[] buffer = new Byte[10000];
int length;
long dataToRead;
NRBLL.File bf = new Asiastar.NRBLL.File();
Guid guid = new Guid(id);
if( bf.FN_SerchPathByFileId(guid).Tables[0].Rows[0]["FilePath"] != null )//判断数据库路径是否存在  
{
string filepath = bf.FN_SerchPathByFileId(guid).Tables[0].Rows[0]["FilePath"].ToString();//获取资源完整路径    D:\资源文件\600cc139-14cf-448e-9e50-daa972d35e01.jpg
//string Oidfilename = bf.FN_SerchPathByFileId(guid).Tables[0].Rows[0]["FileNam"].ToString();
string filename = System.IO.Path.GetFileName(filepath);//获取文件名称+后缀名 600cc139-14cf-448e-9e50-daa972d35e01.JPG
//int index = filepath.IndexOf(".");
//string filetype = filepath.Substring(index).ToLower();//后缀名
//string newfilename = Oidfilename;
//string filepath1 = bf.FN_SerchPathByFileId(guid).Tables[0].Rows[0]["FilePath"].ToString().Substring(0,filepath.Length - 8);
try
{
string fileName = HttpUtility.UrlEncode(System.Text.Encoding.UTF8.GetBytes(filename));//解码(注意这里2层解码)
filename = filename.Replace("+","%20");  //将“+”替换成“空格”
iStream = new System.IO.FileStream(filepath,System.IO.FileMode.Open,System.IO.FileAccess.Read,System.IO.FileShare.Read);
dataToRead = iStream.Length;
context.Response.ContentType = "application/octet-stream";
context.Response.AddHeader("Content-Disposition","attachment; filename=" + HttpUtility.UrlEncode(filename,System.Text.Encoding.UTF8));
while( dataToRead > 0 )
{
if( context.Response.IsClientConnected )
{
length = iStream.Read(buffer,0,10000);
context.Response.OutputStream.Write(buffer,0,length);
context.Response.Flush();
buffer = new Byte[10000];
dataToRead = dataToRead - length;
}
else
{
dataToRead = -1;
}
} }
catch( Exception ex )
{
NR.Error.Log.LogType(ex.ToString());
}
finally
{
if( iStream != null )
{
iStream.Close();
}
}
}
else
{
NR.Error.Log.LogType("找不到文件!");
}
}
public bool IsReusable
{
get
{
return false;
}
}主要是注释的那里 截取运用的不熟

解决方案 »

  1.   

    1、JSON要有格式才能转
    2、context.Response.AddHeader("Content-Disposition","attachment; filename=" + HttpUtility.UrlEncode("这里就是你的资料.rar",System.Text.Encoding.UTF8));
      

  2.   

    json本来就是写死的格式。比如{"city":"Beijing","street":" Chaoyang Road ","postcode":100025}
      

  3.   


    按照你所说 比如你这个定义的city:beijing street  ...等等 那么我数据库还有其他城市 街道等等 那不是得一直写下去?
      

  4.   

    就跟哈希表一样,key:value格式。
      

  5.   

    不太理解的是.JSON dataset或datatable转换之后比如JSON格式像2楼那样 那我数据库里那么多是不是要写N遍?循环读出来转换成JSON??那是程序自己完成的?
      

  6.   

     貌似都不会用json传大量数据吧
      我每次都只是传一条信息
      

  7.   


    using System.Web.Script.Serialization;JavaScriptSerializer ser = new JavaScriptSerializer();
                SinaEventMemberFilterModel jsonmodel = new SinaEventMemberFilterModel();
    //将实体类转为json格式字符串
    string str = ser.Serialize(jsonmodel);
    //将json字符串转为指定类型对象
    jsonmodel = ser.Deserialize(str, typeof(SinaEventMemberFilterModel)) as SinaEventMemberFilterModel;
      

  8.   


    Json跟内存对象之间通过统一的、只有2、3行代码的“序列化/反序列化”操作。难道你自己要针对每一个内存对象都写一堆代码?