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;
}
}主要是注释的那里 截取运用的不熟
数据库有原来文件夹的完整限定名称 如:资料.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;
}
}主要是注释的那里 截取运用的不熟
解决方案 »
- 这个是什么问题,登录提示错误
- 表单提交给自己,IsPostBack==false?
- lock的问题
- 菜鸟求助。。。。。。请问怎样在WEB2。0下实现打印功能。。???
- 小散:刚才和人争论了半小时.高手进来看~ASP.NET的疑问
- asp.net中打开excel文件,在workbooks.open 时报错“不能打开只读文件”
- xml的问题
- Repeater控件中触发子控件同时触发父控件
- 怎样用JS获取动态生成的当前活动的iframe的ID
- 在ASP。NET页面上把debug=true或false 不知道有什么区别?在机子上试的时候好像都一样
- asp.net mvc下如何使用在线编辑器?
- 独立开发的CRM系统 请大师指点
2、context.Response.AddHeader("Content-Disposition","attachment; filename=" + HttpUtility.UrlEncode("这里就是你的资料.rar",System.Text.Encoding.UTF8));
按照你所说 比如你这个定义的city:beijing street ...等等 那么我数据库还有其他城市 街道等等 那不是得一直写下去?
我每次都只是传一条信息
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;
Json跟内存对象之间通过统一的、只有2、3行代码的“序列化/反序列化”操作。难道你自己要针对每一个内存对象都写一堆代码?