熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> ASP編程 >> 正文

在ASP.NET中如何進行文件上傳?

2022-06-13   來源: ASP編程 

上傳文件的步驟:
首先從客戶端取得上傳的文件然後我們將它放入數據流
第二服務器端讀取數據流然後將其保存到緩存
第三將緩存數據保存到數據庫
第一步
首先我們要實現用戶在浏覽器端自由選擇文件然後上傳這裡用戶選擇文件當然是要求標准的Windows方式所以我們在這裡使用Form的File文件組件來給用戶選擇文件注意因為上傳文件所以在Form的屬性設置的時候我們應該設置為multipart/formdata這樣才可以正確上傳文件
下面是上傳頁面的主要代碼
? <form id=&#;frmUpload&#; method=&#;post&#; enctype=&#;multipart/formdata&#; 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 = txtFileContentsPostedFileContentLength;
然後我們可以設置緩存的具體大小了
? byte[] Docbuffer = new byte[intDoclen];
這樣設置以後我們可以將上傳文件的內容保存到緩存中
Stream objStream;
objStream = txtFileContentsPostedFileInputStream;
objStreamRead(DocbufferintDocLen);

在以上代碼中讀取緩存的時候從緩存的位置開始直到整個文件的長度其實這就是整個文件或者整個緩存的大小
第三步

   ? 現在我們需要做的就是將緩存數據保存到數據庫我們已經直到數據表結 構這樣我們通過編寫簡單的SQL語句就可以實現這個功能在上面的內容中我們編寫了一個存儲過程在程序中我們只要建立SqlCommand對象並且將這個存儲過程傳遞給它並設置@Doc參數取得緩存數據就可以了
cmdUploadDoc = new SqlCommand(&#;uSP_BooksUploadFile&#;BooksConn);
cmdUploadDocCommandType = CommandTypeStoredProcedure;
cmdUploadDocParametersAdd(&#;@Title &#;SqlDbTypeVarChar);
cmdUploadDocParametersAdd(&#;@Doc&#;SqlDbTypeImage); cmdUploadDocParametersAdd(&#;@DocType&#;SqlDbTypeVarChar);
cmdUploadDocParameters[]Value = txtTitleText; ?
cmdUploadDocParameters[]Value = Docbuffer;
cmdUploadDocParameters[]Value = strDocType;
點擊按鈕處理代碼
private void btnSubmit_Click(object sender SystemEventArgs e)
{
? string strDocExt;
//strDocType用於保存上傳文件的類型
? string strDocType;
//用於保存文件大小
int intDocLen;
//Stream用於讀取上傳數據
Stream objStream;
SqlConnection BooksConn;
SqlCommand cmdUploadDoc;
if(IsValid)
{
? if(txtFileContentsPostedFile != null)
{
? //文件類型
? strDocExt = CStringRight
? (txtFileContentsPostedFileFileName)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 = txtFileContentsPostedFileContentLength;
byte[] Docbuffer = new byte[intDocLen];
objStream = txtFileContentsPostedFileInputStream;
//文件保存到緩存
//緩存將保存到數據庫
objStreamRead(Docbuffer intDocLen);
BooksConn = new?
?SqlConnection(&#;Server=Server;UID=sa;Database=Books&#;);
cmdUploadDoc = new?
SqlCommand(&#;uSP_BooksUploadFile&#;BooksConn);
cmdUploadDocCommandType = CommandTypeStoredProcedure;
cmdUploadDocParametersAdd(&#;@Title &#;SqlDbTypeVarChar);
cmdUploadDocParametersAdd(&#;@Doc&#;SqlDbTypeImage);
cmdUploadDocParametersAdd(&#;@DocType&#;SqlDbTypeVarChar);
cmdUploadDocParameters[]Value = txtTitleText;
cmdUploadDocParameters[]Value = Docbuffer ;
cmdUploadDocParameters[]Value = strDocType;
BooksConnOpen();
cmdUploadDocExecuteNonQuery();
BooksConnClose();
}
}
}


From:http://tw.wingwit.com/Article/program/ASP/201405/30779.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.