《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 基于ASP.NET的課程資源網(wǎng)站的設(shè)計與實現(xiàn)
基于ASP.NET的課程資源網(wǎng)站的設(shè)計與實現(xiàn)
2015年微型機與應(yīng)用第11期
常婉綸,劉 輝
(西安理工大學(xué),陜西 西安 710082)
摘要: 基于ASP.NET建立的課程資源網(wǎng)站,集共享、管理和展示功能于一體。介紹了網(wǎng)站具備的主要功能模塊和開發(fā)運行環(huán)境,描述了文檔自動轉(zhuǎn)換及在線閱讀、定制資源類別導(dǎo)航欄、大文件上傳的具體實現(xiàn)過程。
Abstract:
Key words :

  常婉綸,劉 輝

 ?。ㄎ靼怖砉ご髮W(xué),陜西 西安 710082)

  摘  要: 基于ASP.NET建立的課程資源網(wǎng)站,集共享、管理和展示功能于一體。介紹了網(wǎng)站具備的主要功能模塊和開發(fā)運行環(huán)境,描述了文檔自動轉(zhuǎn)換及在線閱讀、定制資源類別導(dǎo)航欄、大文件上傳的具體實現(xiàn)過程。

  關(guān)鍵詞: 課程資源網(wǎng)站;在線閱讀;定制資源類別;大文件上傳

0 引言

  隨著高職院校對于示范性專業(yè)建設(shè)工作的開展,積極探索課程改革新思路,建立一套支持日常教學(xué)活動,集共享、管理和展示等功能于一體的課程資源庫尤為重要。通過Web網(wǎng)站建立實現(xiàn)課程資源庫,充分利用校園網(wǎng)絡(luò),為師生提供了新型的教學(xué)平臺[1]。

  本文圍繞著基于ASP.NET的課程資源網(wǎng)站的功能設(shè)計,對網(wǎng)站實現(xiàn)過程中的關(guān)鍵技術(shù)進(jìn)行分析研究,具體介紹了大文件上傳、定制資源類別導(dǎo)航欄、文檔自動轉(zhuǎn)換及在線閱讀的實現(xiàn)過程。

1 系統(tǒng)功能

  課程資源網(wǎng)站從使用角度分為前臺功能和后臺功能,前臺功能面向瀏覽網(wǎng)頁的普通用戶和課程學(xué)習(xí)的學(xué)生用戶,可以在線學(xué)習(xí)或者下載課程資源,網(wǎng)站后臺面向網(wǎng)站管理員及教師用戶,對網(wǎng)站的課程資源進(jìn)行更新維護(hù)。

  1.1 網(wǎng)站前臺

 ?。?)資源分類瀏覽模塊

001.jpg

  如圖1所示,頁面左側(cè)的垂直導(dǎo)航欄顯示課程資源分類列表,頁面的主體區(qū)域顯示選中類別下的所有課程資源,顯示內(nèi)容包括資源的名稱、文件格式、上傳者和上傳時間及相關(guān)描述等,通過資源名稱鏈接,在打開的頁面中可以查看資源詳細(xì)。

 ?。?)查看資源詳細(xì)模塊

  課程資源包含的文件格式主要有PDF、RAR和AVI這三種,因此課程資源詳細(xì)頁面采用三種不同的呈現(xiàn)方式展現(xiàn)課程資源所包含的內(nèi)容。教師上傳資源前先將word、ppt文檔轉(zhuǎn)換成PDF文檔以實現(xiàn)在線閱讀,課程項目庫和案例庫則是打包成RAR壓縮文件以方便用戶進(jìn)行下載,對于avi視頻文件格式,不僅能夠下載,也可以通過在網(wǎng)頁中嵌入流媒體播放器進(jìn)行在線播放。圖2所示為在線瀏覽PDF文檔轉(zhuǎn)換成swf格式的課程資源。

002.jpg

  1.2 網(wǎng)站后臺設(shè)計

 ?。?)課程資源類別管理模塊

  資源類別管理包含了添加、刪除、修改資源類別。為便于用戶的查看和使用,資源類別名顯示在前臺頁面的垂直導(dǎo)航欄中,在管理頁面中可以對資源類別的順序進(jìn)行設(shè)置和保存,對前臺頁面資源導(dǎo)航欄進(jìn)行更新。如圖3所示為課程資源類別管理。

003.jpg

 ?。?)課程資源管理

  課程資源管理實現(xiàn)了對課程資源網(wǎng)站的更新,可以將選中的多個資源信息進(jìn)行刪除,資源信息的刪除不僅刪除數(shù)據(jù)庫對應(yīng)的表記錄,還將徹底刪除服務(wù)器文件上傳目錄對應(yīng)的資源文件。添加資源不僅將新的課程資源信息添加至數(shù)據(jù)庫,還將對應(yīng)的文檔、程序包或視頻上傳至服務(wù)器。

2 系統(tǒng)開發(fā)運行環(huán)境

  網(wǎng)站開發(fā)使用了微軟的ASP.NET技術(shù),C#作為編程語言,使用jQuery技術(shù)在瀏覽器端對HTML元素進(jìn)行操作。開發(fā)環(huán)境選用Visual Studio 2005,數(shù)據(jù)庫平臺為SQL Server 2005,服務(wù)器軟件IIS6.0及運行平臺.NET framework 2.0,瀏覽器版本在IE9.0以上。

  此外,還需要三個軟件包的支持,分別是用于大文件上傳的NeatUpload、轉(zhuǎn)換swf格式的SwfTools、在線閱讀播放器Flexpaper。

3 關(guān)鍵技術(shù)實現(xiàn)

  3.1 文檔swf轉(zhuǎn)換及在線閱讀

  課程資源的各類文檔以PDF格式上傳,再通過SwfTools中的PDF2SWF工具將PDF文件轉(zhuǎn)換為體積較小的SWF文件,適合網(wǎng)絡(luò)傳播[2]。

  (1)下載并安裝SwfTools軟件包,用于將PDF文檔轉(zhuǎn)換為Swf文檔。

  C#程序調(diào)用SwfTools進(jìn)行文件的Swf轉(zhuǎn)換:

  //提供完整的軟件安裝路徑

  string cmdStr="C:\\Program Files\\SWFTools\\pdf2swf.exe";

  string filePath=HttpContext.Current.Server.MapPath

 ?。?quot;../loadpath/"+NewFileName+ExtenName);

  //設(shè)置執(zhí)行命令,filePath是被轉(zhuǎn)換文件的路徑,savePath是轉(zhuǎn)換后swf文件的存放路徑

  string args="-t"+filePath+"-o"+savePath+"\\"+NewFileName+".swf";

  pdf2swf.ExecutCmd(cmdStr,args);//pdf2swf工具執(zhí)行轉(zhuǎn)換命令

  需要注意,服務(wù)器端如果是32位操作系統(tǒng),獲取可執(zhí)行文件的路徑需要寫成C:\\Program Files(x86)\\SWFTools\\pdf2swf.exe,否則無法找到轉(zhuǎn)換工具。

  (2)在線閱讀文檔

  本系統(tǒng)使用開源的Flexpaper播放器,可以嵌入到網(wǎng)頁中播放swf文檔。

  首先,下載解壓的js文件夾和FlexPaperViewer.swf文件并復(fù)制到站點目錄下,在文檔閱讀頁面添加JavaScript腳本對播放器參數(shù)進(jìn)行配置,這時頁面中播放的文檔是固定不變的。

  接著,進(jìn)行資源文件的路徑綁定,這樣Flexpaper播放器中的文檔就可以切換。在該頁面中添加一個隱藏域,通過value屬性將對應(yīng)資源的swf文件路徑進(jìn)行綁定。

  <input type="hidden"id="file"value=′<%=FileURL%>′/>

  最后,通過變量fileURL獲取隱藏域的value屬性值,var fileURL=$("#file").val();將swf文件路徑傳遞給頁面的播放器配置參數(shù),最終實現(xiàn)了課程資源文檔的在線閱讀。

  3.2 定制資源類別導(dǎo)航欄

  本系統(tǒng)采用jQuery技術(shù)對HTML元素進(jìn)行操作,以“所見即所得”的方式完成了對資源類別順序的調(diào)整[3]。

  網(wǎng)頁中包含jQuery程序包,代碼如下所示:

  <script language="javascript"src="../jquery-1.3.2.min.js"

  ></script>

  編寫JavaScript腳本程序,實現(xiàn)html表格選中行與相鄰行的交換,以選中行上移為例,通過jQuery交換相鄰行,代碼如下:

  var currentStep=0;//標(biāo)記選中行

  var max_line_num=<%#i%>;//總共的行數(shù)

  function up_exchange_line(){

  if(currentStep==0){

  alert(′請選擇一項!′);

  return false;

  }

  if(currentStep<=1){

  //選中行超過范圍給出錯誤提示

  alert(′非法操作!′);

  return false;

  }

  var upStep=currentStep-1;  //修改序號

  $(′#line′+upStep+"td:first-child").html(currentStep);

  $(′#line′+currentStep+"td:first-child").html(upStep);

  //獲取隱藏域

  var lastVal=$(′#h′+upStep).val();

  $(′#h′+upStep).val(currentStep);

  $(′#h′+currentStep).val(lastVal);

  //取得兩行的內(nèi)容

  var upContent=$(′#line′+upStep).html();

  var currentContent=$(′#line′+currentStep).html();

  $(′#line′+upStep).html(currentContent);

  //交換當(dāng)前行與上一行內(nèi)容

  $(′#line′+currentStep).html(upContent);

  $(′#content tr′).each(function()

  {$(this).css("background-color","#ffffff");});

  $(′#line′+upStep).css("background-color","yellow");

  currentStep=upStep;

  }

  當(dāng)點擊表格上方的上下按鈕時,選中行在表格中發(fā)生移動,修改完畢點擊“保存目錄順序”按鈕,修改后的類別順序保存至數(shù)據(jù)庫中,最后點擊“重新生成導(dǎo)航欄”,與導(dǎo)航欄數(shù)據(jù)源綁定的XML文檔自動更新,方便用戶的使用。

  3.3 大文件上傳

  通常使用ASP.NET提供的FileUpload控件就可實現(xiàn)文件上傳,但是該控件存在一些弊端。第一,當(dāng)請求超過maxRequestLength(默認(rèn)4 MB)之后,ASP.NET處理程序?qū)⒉粫幚碓撜埱?;第二,無法提供文件上傳時的進(jìn)度條提示。

  課程資源網(wǎng)站經(jīng)常需要上傳教學(xué)視頻、項目庫等較大文件,這些文件從幾兆到幾十兆不等,傳輸時間較長,實時提示傳輸進(jìn)度非常必要。為解決文件上傳問題,可以采用開源界提供的上傳組件NeatUpload[4-5]。具體實現(xiàn)過程如下:

 ?。?)NeatUpload上傳組件的安裝和配置

  下載的NeatUpload版本是NeatUploadBinaries-1-3-26,解壓后的文件夾如圖4所示,首先將bin目錄下的Brettle.Web.NeatUpload.dll文件添加至Web站點,然后將NeatUpoad文件夾整體拷貝至站點根目錄下。

  接著,在Visual Studio 2005集成開發(fā)環(huán)境下的“工具箱”區(qū)域單擊右鍵--->彈出的菜單中選“選擇項”--->彈出窗口中選擇“瀏覽”--->添加“Brettle.Web.NeatUpload.dll”,.NET Framework組件選項卡中選中對應(yīng)的組件,這樣工具欄中就會出現(xiàn)NeatUpload控件組。本系統(tǒng)主要使用InputFile和ProgressBar這兩個控件。

  (2)修改網(wǎng)站配置文件

  Web.config是站點文件夾的配置文件,system.web節(jié)點中寫入下面的配置,設(shè)置最大請求長度和運行超時時間,并且傳輸文件的過程中顯示進(jìn)度條。

  <httpModules>

  <add name="UploadHttpModule"

  type="Brettle.Web.NeatUpload.UploadHttpModule,

  Brettle.Web.NeatUpload"/>

  </httpModules>

  <http Runtime maxRequestLength="400000"

  executionTimeout="3600" />

  (3)使用NeatUpload實現(xiàn)大文件上傳

  從工具欄中將InputFile和ProgressBar這兩個控件拖放至頁面,其中InputFile控件用于在瀏覽器端選擇上傳的文件,ProgressBar控件顯示傳輸進(jìn)度。

  實現(xiàn)文件上傳功能的程序如下。

  protected void btnOK_Click(object sender,EventArgs e)

  {

  if(this.InputFile1.HasFile)//判斷文件是否存在

  {

  string FileName=this.InputFile1.FileName;

  //獲取上傳文件的全路徑

  string ExtenName=System.IO.Path.GetExtension

 ?。‵ileName);//獲取擴展名

  string NewFileName=DateTime.Now.ToString

 ?。?quot;yyyyMMddhhmm");//用當(dāng)前日期時間設(shè)置新文件名

  string SaveFileName=System.IO.Path.Combine

 ?。≧equest.PhysicalApplicationPath+@"/loadpath/",

  NewFileName+ExtenName);

  //合并上傳到服務(wù)器上的全路徑

  this.InputFile1.MoveTo(SaveFileName,Brettle.Web.NeatUpload.MoveToOptions.Overwrite);//執(zhí)行文件上傳操作

  }

  else

  {

  Web.Tools.ObjectHandler.MessageBox("請選擇文件!");

  }

  }

  如圖4所示為執(zhí)行文件上傳過程的進(jìn)度條。

004.jpg

4 結(jié)束語

  該網(wǎng)站對課程資源的共享、維護(hù)和更新,不僅為教師授課提供便利,也積極地促進(jìn)學(xué)生的課程學(xué)習(xí),實現(xiàn)優(yōu)質(zhì)資源共享,適應(yīng)教育發(fā)展的趨勢。

  參考文獻(xiàn)

  [1] 杜垚.高職院校網(wǎng)絡(luò)數(shù)據(jù)庫課程資源庫建設(shè)的探索和研究[J].科技視界,2012,9(25):189-190.

  [2] 亓小濤.基于FlashPaper的文檔在線閱讀技術(shù)探析[J].軟件導(dǎo)刊,2013(3):82-83.

  [3] 袁江.jQuery開發(fā)從入門到精通[M].北京:清華大學(xué)出版社,2013.

  [4] 魏峰.ASP.NET文件上傳解決方案[J].電腦編程技巧與維護(hù),2009,12(14):13.

  [5] 吳云.顧保磊.精品課程網(wǎng)站關(guān)鍵技術(shù)研究[J].軟件導(dǎo)刊,2014,13(3):195-196.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。