在ASP.NET中如何进行文件上传?

上传文件的步骤:

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

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

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

第一步

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

下面是上传页面的主要代码:

<formid=”frmUpload”method=”post”enctype=”multipart/form-data”runat=”server”>

<span>Title</span><br>

<asp:textboxid=”txtTitle”runat=”server”EnableViewState=”False”></asp:textbox>

<asp:requiredfieldvalidatorid=”valrTitle”runat=”server”ErrorMessage=”*Required”ControlToValidate=”txtTitle”>*Required</asp:requiredfieldvalidator>

<br>

<br>

<span>DocutmenttoUpload</span><br>

<inputid=”txtFileContents”type=”file”runat=”server”NAME=”txtFileContents”>

<br>

<br>

<asp:buttonid=”btnSubmit”Text=”Submit”Runat=”server”></asp:button>

</form>

第二步

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

intintDocLen=txtFileContents.PostedFile.ContentLength;

然后,我们可以设置缓存的具体大小了:

byte[]Docbuffer=newbyte[intDoclen];

这样设置以后,我们可以将上传文件的内容保存到缓存中:

StreamobjStream;

objStream=txtFileContents.PostedFile.InputStream;

objStream.Read(Docbuffer,0,intDocLen);

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

第三步

现在我们需要做的就是将缓存数据保存到数据库,我们已经直到数据表结构,这样,我们通过编写简单的SQL语句就可以实现这个功能。在上面的内容中,我们编写了一个存储过程,在程序中,我们只要建立SqlCommand对象并且将这个存储过程传递给它,并设置“@Doc”参数取得缓存数据就可以了:

cmdUploadDoc=newSqlCommand(”uSP_BooksUploadFile”,BooksConn);

cmdUploadDoc.CommandType=CommandType.StoredProcedure;

cmdUploadDoc.Parameters.Add(”@Title“,SqlDbType.VarChar,200);

cmdUploadDoc.Parameters.Add(”@Doc”,SqlDbType.Image);cmdUploadDoc.Parameters.Add(”@DocType”,SqlDbType.VarChar,4);

cmdUploadDoc.Parameters[0].Value=txtTitle.Text;

cmdUploadDoc.Parameters[1].Value=Docbuffer;

cmdUploadDoc.Parameters[2].Value=strDocType;

点击按钮处理代码

privatevoidbtnSubmit_Click(objectsender,System.EventArgse)

{

stringstrDocExt;

//strDocType用于保存上传文件的类型

stringstrDocType;

//用于保存文件大小

intintDocLen;

//Stream用于读取上传数据

StreamobjStream;

SqlConnectionBooksConn;

SqlCommandcmdUploadDoc;

if(IsValid)

{

if(txtFileContents.PostedFile!=null)

{

//文件类型

strDocExt=CString.Right

(txtFileContents.PostedFile.FileName,4).ToLower();

switch(strDocExt)

{

case“.doc”:

strDocType=“doc”;

break;

case“.ppt”:

strDocType=“ppt”;

break;

case“.htm”:

strDocType=“htm”;

break;

case“.html”:

strDocType=“htm”;

break;

case“.jpg”:

strDocType=“jpg”;

break;

case“.gif”:

strDocType=“gif”;

break;

default:

strDocType=“txt”;

break;

}

//上传文件具体内容

intDocLen=txtFileContents.PostedFile.ContentLength;

byte[]Docbuffer=newbyte[intDocLen];

objStream=txtFileContents.PostedFile.InputStream;

//文件保存到缓存

//缓存将保存到数据库

objStream.Read(Docbuffer,0,intDocLen);

BooksConn=new

SqlConnection(”Server=Server;UID=sa;Database=Books”);

cmdUploadDoc=new

SqlCommand(”uSP_BooksUploadFile”,BooksConn);

cmdUploadDoc.CommandType=CommandType.StoredProcedure;

cmdUploadDoc.Parameters.Add(”@Title“,SqlDbType.VarChar,200);

cmdUploadDoc.Parameters.Add(”@Doc”,SqlDbType.Image);

cmdUploadDoc.Parameters.Add(”@DocType”,SqlDbType.VarChar,4);

cmdUploadDoc.Parameters[0].Value=txtTitle.Text;

cmdUploadDoc.Parameters[1].Value=Docbuffer;

cmdUploadDoc.Parameters[2].Value=strDocType;

BooksConn.Open();

cmdUploadDoc.ExecuteNonQuery();

BooksConn.Close();

}

}

}

相关推荐