当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > ASP.NET中上传文件到数据库

ASP.NET
asp.net GridView控件中模板列CheckBox全选、反选、取消
asp.net GridView 删除时弹出确认对话框(包括内容提示)
asp.net DropDownList 三级联动下拉菜单实现代码
asp DataTable添加列和行的三种方法
Asp.net 页面调用javascript变量的值
asp.net 长文章通过设定的行数分页
asp.net 定时间点执行任务的简易解决办法
asp.net 页面延时五秒,跳转到另外的页面
asp.net 动态输出透明gif图片
asp.net DataList与Repeater用法区别
asp.net Javascript获取CheckBoxList的value
asp.net程序在调式和发布之间图片路径问题的解决方法
asp.net下生成英文字符数字验证码的代码
asp.net 页面版文本框智能提示JSCode (升级版)
ASP.NET URL伪静态重写实现方法
ASP.NET 2.0 中Forms安全认证
asp.net 动态添加多个用户控件
asp.net Repeater显示父子表数据,无闪烁
asp.net 无法获取的内部内容,因为该内容不是文本 的解决方法
asp.net GridView排序简单实现

ASP.NET中上传文件到数据库


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 64 ::
收藏到网摘: n/a

  数据表结构

  现在,我们来看存放文件的数据库表结构,这里,我们给出建立表的标准SQL语句:

CREATE TABLE tblBooksUpload
(
 DocID int NOT NULL IDENTITY Primary Key ,
 DocTitle varchar (200) ,
 Doc image,
 DocType varchar (50) ,
 Entrydate datetime Default GetDate()
)

  以上的语句中,我们看到数据表tblBooksUpload包含五个字段:

  ·字段DocID是表的关键字段,数据记录编号;

  ·字段DocTitle是用来简单说明上传文件的,如果上传文本文件,我们一般将其设置为文件标题,图像、程序等,就设置为图像、程序的简单介绍;

  ·字段Doc是用来存放我们上传的文件的字段,注意,这里将Doc字段的设置为Image类别;

  ·字段DocType用来保存我们上传文件的类型,可能我们奇怪为什么要这个字段呢?其实,这个字段是很重要的,在用户从数据库取得数据的时候,这个字段将用来指定数据字段Doc中数据的类别,然后,浏览器根据这个字段来决定呈现给用户的数据;

  ·字段DateTime是一个时间字段,我们可以看到该字段的值取自服务器的当前日期。

  下面是插入数据的存储过程,我们来看具体代码:

CREATE PROCEDURE uSP_BooksUploadFile
@Title varchar(200),
@Doc image,
@DocType varchar(4)

AS

INSERT tblBooksUpload(DocTitle,Doc,DocType)
VALUES (@Title,@Doc,@DocType)

GO

  上传文件的步骤

  现在,我们先从文字上了解一下上传文件到数据库的具体步骤,再从代码上来实现:

  首先,从客户端取得上传的文件,然后,我们将它放入数据流;

  第二,服务器端读取数据流,然后将其保存到缓存;

  第三,将缓存数据保存到数据库;

  现在,我们一步步来看怎样在程序中实现这些功能。

  第一步

  当然,首先我们要实现用户在浏览器端自由选择文件,然后上传,这里用户选择文件,当然是要求标准的Windows方式,所以,我们在这里使用Form的File文件组件来给用户选择文件。注意,因为上传文件,所以,在Form的属性设置的时候,我们应该设置为:multipart/form-data,这样,才可以正确上传文件。下面是上传页面的主要代码:

<form id="frmUpload" method="post" enctype="multipart/form-data" runat="server">
<span>Title</span><br>
<asp:textbox id="txtTitle" runat="server" EnableViewState="False"></asp:textbox>
<asp:requiredfieldvalidator id="valrTitle" runat="server" ErrorMessage="*
Required" ControlToValidate="txtTitle">* Required</asp:requiredfieldvalidator>

<br>
<br>

<span>Docutment to Upload</span><br>
<input id="txtFileContents" type="file" runat="server" NAME="txtFileContents">
<br>
<br>

<asp:button id="btnSubmit" Text="Submit" Runat="server"></asp:button>
</form>
  第二步

  我们可以将上传的文件通过数据流保存到缓存,缓存的大小和文件的具体大小相同,我们可以使用以下的代码来取得文件的具体大小:

int intDocLen = txtFileContents.PostedFile.ContentLength;

  然后,我们可以设置缓存的具体大小了:
  
byte[] Docbuffer = new byte[intDoclen];

  这样设置以后,我们可以将上传文件的内容保存到缓存中:
  
Stream objStream;
objStream = txtFileContents.PostedFile.InputStream;
objStream.Read(Docbuffer,0,intDocLen);


  在以上代码中,读取缓存的时候,从缓存的0位置开始,直到整个文件的长度,其实,这就是整个文件或者整个缓存的大小。

[1] [2] 下一页