asp.net上传附件到sql 08数据库 对应字段是 text 型的,求可用例子

ijwsoft 2011-12-21 03:48:16
asp.net上传附件到sql 08数据库 对应字段是 text 型的,求可用例子!

注:
对应字符是 image 类型字段的,我会用。
但 text/ntext 型字段,没弄过,求帮助!
...全文
199 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ijwsoft 2011-12-22
  • 打赏
  • 举报
回复
回sandy945,#5的回复我刚才才看!你辛苦了!

多谢各位,我已经解决了!

效果图:http://hi.csdn.net/space-139605-do-album-picid-1016622.html

我的思路:如果要下载的文件是图片类型,则直接在浏览器输出;否则,则直接下载之!
以下是显示文件页的部分代码:

private void ExportFile()
{
string sID = GetUrlParam("id");
string sItem = GetUrlParam("item");
if (sID != "" && sItem != "")
{
int id = 0, item = 0;
int.TryParse(sID, out id);
int.TryParse(sItem, out item);
model = bll.GetModel_Attach(item, id);
if (model != null)
{
if (model.AttachFile != null)
{
if (FileIsPicture(model.FileName)) // 如果文件是图片,则直接打开
{
// Response.BinaryWrite(Convert.FromBase64String(model.AttachFile));
byte[] pict = Convert.FromBase64String(model.AttachFile);
Response.ContentType = "image/bmp";
Response.OutputStream.Write(pict, 0, pict.Length);
}
else //不是图片,则直接下载
{
byte[] pict = Convert.FromBase64String(model.AttachFile);
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
//Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(model.FileName, System.Text.Encoding.UTF8));
Response.HeaderEncoding = System.Text.Encoding.GetEncoding("gb2312"); // 解决文件名中文乱码
Response.AddHeader("Content-Disposition", "attachment; filename=" + model.FileName);
Response.BinaryWrite(pict);
Response.Flush();
Response.End();
}
}
}
else
{
Response.Write("<font color='red'>文件不存在!</font>");
}
}
}

private bool FileIsPicture(string sFileName)
{
List<string> listPicType = new List<string> { ".jpg",".bmp",".png"};
bool bResult = false;
foreach (string sType in listPicType)
{
bResult = sFileName.ToLower().EndsWith(sType);
if (bResult)
break;
}
return bResult;
}

private string GetUrlParam(string sParamName)
{
if (Request.Params[sParamName] != null && Request.Params[sParamName].Trim() != "")
return Request.Params[sParamName];
else
return "";
}
patann 2011-12-22
  • 打赏
  • 举报
回复
我的建议是不要把附件保存到数据库,如果保存到数据库,以后数据库文件就会很大很大,这样会影响数据库的维护工作,例如,备份和恢复都需要很长时间
阿非 2011-12-22
  • 打赏
  • 举报
回复
#5 的没看?
ijwsoft 2011-12-22
  • 打赏
  • 举报
回复
非常感谢楼上的各位伙计!

昨天从 1楼的链接中找到了部分解决方案:

上传动作:

modelAttach.AttachFile = Convert.ToBase64String(buffer);
(modelAttach.AttachFile为string型的变量,对应的数据库字段是text型)

超链接显示文件页:
if (model.AttachFile != null)
Response.BinaryWrite(Convert.FromBase64String(model.AttachFile));

----------------------
但是,还有以下问题存在:
1, 如果上传的是图片,在IE8,360Safe等浏览器下,显示正常;在FireFox,Chrome等浏览器下,显示一大段的乱码;
2,如果上传的是.txt文件,中文则全部为乱码;还有,在.txt中为3行,显示出来,就只有1行;
3,如果上传的是.doc/.docx,.xls/.xlsx,.ppt/.pptx,.pdf等文件,则在 FireFox,Chrome等浏览器下显示是一大段的乱码;在IE8,360Safe等浏览器下,显示一个下载包,但解压出来却不是原来文件,而是被分割成了很多的xml文件!

以上问题求思路。
阿非 2011-12-21
  • 打赏
  • 举报
回复
用Sqlserver中的text类型存储图片

http://blog.csdn.net/sandy945/article/details/7092230
lisweden 2011-12-21
  • 打赏
  • 举报
回复
把上传的附件里的内容,toString()后再保存
阿非 2011-12-21
  • 打赏
  • 举报
回复
一样的

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧