| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 944 人关注过本帖
标题:ASP.NET中文件上传上传到数据库。。这么查看?(非图片)
只看楼主 加入收藏
smoon
Rank: 1
等 级:禁止访问
帖 子:461
专家分:0
注 册:2006-4-29
收藏
 问题点数:0 回复次数:2 
ASP.NET中文件上传上传到数据库。。这么查看?(非图片)

上传的时候可以是任何文件类型的。。数据全部以二进制插入到数据库里。。不是链接。。
现在能成功的插入到数据库了。。关键问题是这么把他显示出来。。
网上找了一个有详细讲解的。。。下载那一本份没代码没给全。。小菜也看不太明白。。。
高手路过的时候帮忙看看好不好?最好是能段代码。。。要求
”  执行上面的方法后,系统会提示用户选择直接打开还是下载。这一部分我们就说到这里。 “
就是这个。。。。。
这里我们主要说一下如何以二进制的形式上传文件以及下载。首先说上传,方法如下:

public byte[] UpLoadFile(HtmlInputFile f_IFile)
{
 //获取由客户端指定的上传文件的访问
 HttpPostedFile upFile=f_IFile.PostedFile;
 //得到上传文件的长度
 int upFileLength=upFile.ContentLength;
 //得到上传文件的客户端MIME类型
 string contentType = upFile.ContentType;
 byte[] FileArray=new Byte[upFileLength];

 Stream fileStream=upFile.InputStream;

 fileStream.Read(FileArray,0,upFileLength);
 return FileArray;
}

  这个方法返回的就是上传的文件的二进制字节流,这样我们就可以将它保存到数据库了。下面说一下这种形式的下载,也许你会想到这种方式的下载就是新建一个 aspx页面,然后在它的Page_Load()事件里取出二进制字节流,然后再读出来就可以了,其实这种方法是不可取的,在实际的运用中也许会出现无法打开某站点的错误,我一般采用下面的方法:

  首先,在Web.config中加入:

<add verb="*" path="openfile.aspx" type="RuixinOA.Web.BaseClass.OpenFile, RuixinOA.Web"/>

  这表示我打开openfile.aspx这个页面时,系统就会自动转到执行RuixinOA.Web.BaseClass.OpenFile 这个类里的方法,具体实现如下:

using System;
using System.Data;
using System.Web;
using System.IO;
using Ruixin.WorkFlowDB;
using RXSuite.Base;
using RXSuite.Component;
using RuixinOA.BusinessFacade;

namespace RuixinOA.Web.BaseClass
{
 /**////
 /// NetUFile 的摘要说明。
 ///
 public class OpenFile : IHttpHandler
 {
  public void ProcessRequest(HttpContext context)
  {
   //从数据库中取出要下载的文件信息
   RuixinOA.BusinessFacade.RX_OA_FileManager os = new RX_OA_FileManager();
   EntityData data = os.GetFileDetail(id);

   if(data != null && data.Tables["RX_OA_File"].Rows.Count >0)
   {
    DataRow dr = (DataRow)data.Tables["RX_OA_File"].Rows[0];
    context.Response.Buffer = true;
    context.Response.Clear();
    context.Response.ContentType = dr["CContentType"].ToString();
    context.Response.AddHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode(dr["CTitle"].ToString()));
    context.Response.BinaryWrite((Byte[])dr["CContent"]);
    context.Response.Flush();
    context.Response.End();
   }
  }
  public bool IsReusable
  {  
   get { return true;}
  }
 }
}

  执行上面的方法后,系统会提示用户选择直接打开还是下载。这一部分我们就说到这里。

搜索更多相关主题的帖子: 数据库 NET 二进制 ASP 文件 
2007-10-18 16:15
smoon
Rank: 1
等 级:禁止访问
帖 子:461
专家分:0
注 册:2006-4-29
收藏
得分:0 
自己顶起来---------同志们。。。。。。。快啊。。急。。实在是在网上找不到了啊

QQ:860660016
网站:http://
承接各种C#项目中。。。。。
2007-10-18 16:39
smoon
Rank: 1
等 级:禁止访问
帖 子:461
专家分:0
注 册:2006-4-29
收藏
得分:0 

问题搞定。。
代码如下

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;


public partial class AddGenus : System.Web.UI.Page
{
DBConn Conn = new DBConn();


public int LessonID
{
get
{
return Request.QueryString["ID"] == null ? 0 : int.Parse(Request.QueryString["ID"].ToString());
}
}
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
// if (this.LessonID <= 0)
// return;
// using (SqlConnection sqlCon = new SqlConnection(Config.sqlConnectionString))
{
// sqlCon.Open();
SqlConnection sqlCon = Conn.OpenDB();
SqlCommand sqlComm = sqlCon.CreateCommand();
// sqlComm.CommandText = "Update Lesson_Data_Table set Lesson_Click = Lesson_Click + 1 where Lesson_ID =" + LessonID;
// sqlComm.ExecuteNonQuery();

sqlComm.CommandText = "select * from 归档文件原件 where iD=15";
SqlDataReader sqlReader = sqlComm.ExecuteReader();
byte[] buffer;
if (sqlReader.Read())
{
Response.Clear();
buffer = (byte[])sqlReader["原件数据内容"];
Response.AddHeader("Content-Length", buffer.Length.ToString());
Response.AddHeader("Content-Type", ".rar");
Response.AddHeader("Content-Disposition", "attachment; filename=" +"aaa");
// Response.AddHeader("Content-Type", sqlReader["Lesson_File_Type"].ToString());
// Response.AddHeader("Content-Disposition", "attachment; filename=" + sqlReader["Lesson_File_Name"].ToString());
Response.BinaryWrite(buffer);
Response.End();
}
sqlReader.Close();

}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}


QQ:860660016
网站:http://
承接各种C#项目中。。。。。
2007-10-18 17:01
快速回复:ASP.NET中文件上传上传到数据库。。这么查看?(非图片)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012366 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved