<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      ASP.NET完成網絡空間管理

      [摘要]前言 、 電子閱覽室、計算機房、網吧等公共上機場所由于使用頻繁、維護滯后等原因,輸出系統如軟驅等設備受損的現象普遍,往往在你需要將加工后的數據輸出時才發現輸出設備不能工作而大為光火,并且許多計算機房為了節省成本,在聯網的計算機上并不配全必要的輸出設備! 、 電腦普及的同時使的人們對它的依賴越來...
      前言

       、 電子閱覽室、計算機房、網吧等公共上機場所由于使用頻繁、維護滯后等原因,輸出系統如軟驅等設備受損的現象普遍,往往在你需要將加工后的數據輸出時才發現輸出設備不能工作而大為光火,并且許多計算機房為了節省成本,在聯網的計算機上并不配全必要的輸出設備。

       、 電腦普及的同時使的人們對它的依賴越來越強,很多辦公事務已經離不開電腦。換句話說,辦公人員的電腦里開始存放著許多重要的辦公與私人數據。而這些數據,在大多數情況下是唯一的,意即它們的擁有者并沒有把它們做一份副本存放在不同的電腦上,其安全性完全取決于它們的擁有者的電腦的穩定性。

       、 Internet的普及拉近了人們之間的距離,讓人們交流變得更為便捷,但是我們每天需要在家庭、辦公室、網吧等不同場所上網,怎樣才能持續對某份文檔進行編輯處理呢?或許通過優盤或者是移動硬盤之類的移動存儲設備能夠隨身攜帶這些資料,不過隨身多帶一個這樣的設備特別是移動硬盤總歸不是很方便,而且不同的場所、不同的設備、不同的操作系統對優盤或移動硬盤的支持不盡相同,使用者的電腦水平也不盡相同。

        ……

        由于這些事實,使的網絡存儲作為一種需要登上了舞臺。

        目前實現網絡存儲的方式有很多種,比如電子郵件、FTP、網上鄰居、HTTP等等。其中,FTP功能最為強大,但使用起來卻稍顯復雜,一大堆設置足以讓許多人望而止步,尤其用戶數量不可預見時,針對特殊需求用戶的設置將更加繁瑣;電子郵件是大家所熟悉的了,但在局域網內部,財務、勞資等文件資料需通過這種方式交流不是好辦法,而且,當你的文件足夠大時對郵件空間是個致命沖擊;網上鄰居通過在本機上指定共享的Web文件夾并放置文件,一定范圍內的用戶可以訪問到這些文件,然而這種方式使用的范圍相當有限,通常在同一個DNS段地址內的用戶才能順利訪問,其它尤其是Internet上的用戶,很難使用,此外同電子郵件類似,它的使用也不直觀,很多時候你不得不在許多列表計算機上一層層展開搜索才有可能獲取你想要的資源! 以上所述這些網絡存儲方式還有一個共同的缺點:即管理員對存儲在網絡存儲中的文件的使用情況無法有一個比較清晰的了解,只能根據文件的存儲時間來決定是否對其進行空間清理。

        本文介紹一種通過HTTP實現的比較簡單的網絡存儲方式。這種方式是在WINDOWS平臺上通過IIS與ASP/ASP.NET來實現,不僅使用簡單、可上載任意類型的文件,而且可以對使用者使用空間進行限制,一次傳輸小到20字節、大到幾百兆都可以由管理者進行管理,另外,文件的安全性也得到了保障,只有文件擁有者及得到授權者才可回載文件。讀懂本文第二大點中的數據結構及第三大點中的上傳源碼,將幫助你自己做一個網絡存儲,你就不必依賴于市場上提供的免費網絡存儲,使網絡內部的敏感數據文件的安全牢牢掌握在自己手中。

        概述與基本功能

        安裝一臺作為網絡存儲宿主的服務器,操作系統采用windows平臺,配套IIS5.0,設置好WEB服務,在主網站下建立一個虛擬網站,指向網絡存儲,如:d:\netspace\spacenet\myspace。所有的asp及asp.net源碼放置在主網站(如:c:\inetpub\wwwroot)下,d:\netspace\spacenet\myspace下將放置用戶上傳的文件(虛擬網站改變,在源碼中也應作相應調整)。

        1、用到的基本數據庫及結構:

       、 ftpsapce.mdb: 擁有表userlist, 表基本結構:

        Id:順序號,自動生成;
        Xh:用戶帳號,注冊及驗證生成;
        Xm:用戶姓名,注冊及驗證生成;
        Kl:用戶口令,注冊及驗證生成;
        Maxspace:用戶空間最高限額,注冊取默認值,管理員可以通過管理重設定;
        Nowspace:用戶目前占用空間的數量;
        Lastaccessday:用戶最近一次存取時間,供管理員管理空間時參考;
        Fromday:用戶注冊時間;
        Checkx:用戶驗證已否標志。

       、 Filelist.mdb:擁有表files,表基本結構:

        Id:順序號,自動生成;
        Filename:文件名,上載系統判斷生成;
        Fsize:文件大小數值;
        Xh:用戶帳號;
        Upday:上載時間;
        Filescript:文件描述,是用戶上載時的文件的路徑及原文件名,供用戶加載時參考;

        2、基本功能

       、 用戶登錄主網站,進入網站主頁面,給出用戶基本資料進行用戶注冊。

       、 管理員根據用戶注冊資料予以審核,設定用戶最大使用空間。

       、 審核通過的用戶上傳文件到網絡存儲。系統判定用戶合法性及文件合法性,在數據庫中對用戶上傳的文件及用戶資料進行登記。

       、 審核過的用戶通過下載功能對自己上傳的文件進行回載或刪除。

       、 管理員根據用戶數據庫及文件數據庫對網絡空間進行管理。

       、 擴展過的系統允許得到授權的用戶對授權用戶的上傳文件進行下載。

        上載模塊基本源碼

        限于篇幅,本文僅給出上載模塊的基本源碼,需要更多源碼可通過E-mail向作者索取,源碼中以***開頭的行是作者為了讀者閱讀方便而加上的注釋。(以下摘自 upfile.aspx)

      <%@ Page Language="VB" Debug="true" %>
      <%@ import namespace="System.Data" %>
      <%@ import namespace="System.Data.oledb" %>
      <html>
      <script language="vbscript" runat="server">
      sub uploadfile(sender as object, e as eventargs)
       if fileup.postedfile.contentlength<20 then
        errors.text="這么小的文件也要上傳,背背就可以了."
        fileinfo.visible=false
        exit sub
       else
        errors.text="檢驗正常"
        fileinfo.visible=true
      end if

      *** 以上檢查上傳文件大小
      respace.text="0"
      nowspace.text="0"

      *** respace指剩余空間,nowspace指已用空間

      dim xh1 as string =user1.value
      dim kl1 as string =pass1.value

      *** xh1指帳號,kl1指口令

      dim objconnstr as string="provider=microsoft.jet.oledb.4.0;data source="
      & server.mappath("ftpspace.mdb")

      *** 以上兩行在源碼中應為同一語句

      dim objconn as oledbconnection = new oledbconnection(objconnstr)
      dim sql1 as string="select * from userlist where xh='"+xh1+"' and kl='"+kl1+"'"
      dim objrscc as oledbcommand= new oledbcommand(sql1,objconn)
      objconn.open()
      dim objrs as oledbdatareader = objrscc.executereader()
      dim ix as integer=0
      dim maxs as long
      dim nows as long
      while ix=0
       if objrs.read() then
        if objrs.item("xh")=xh1 then
         if objrs.item("kl")=kl1 then
          if objrs.item("checkx")=1 then
           ix=ix+1
           maxs=objrs.item("maxspace")
           nows=objrs.item("nowspace")
          end if
         end if
        end if
       else
        ix=-1
       end if
      end while

      *** 以上判定帳號與口令是否合法

      if ix<=0 then
       errors.text="帳號口令錯!或用戶尚未通過認證,請等待管理員認證!"
      else

      if fileup.postedfile.contentlength>maxs-nows then
       if fileup.postedfile.contentlength>=maxs then
        errors.text="文件長度大于賦予空間大小,不能上傳!"
       else
        errors.text="可用空間不足,請刪除舊文件!"
       end if

      *** 以上判定用戶空間的可用性
      else
       dim obj4str as string="provider=microsoft.jet.oledb.4.0;
       data source=" & server.mappath("filelist.mdb")

      *** 以上兩行在源碼中為同一語句
       dim obj4 as oledbconnection = new oledbconnection(obj4str)
       dim sql10 as string="select * from files"
       dim objrc1 as oledbcommand= new oledbcommand(sql10,obj4)
       obj4.open()
       dim objrsx as oledbdatareader = objrc1.executereader()
       dim fn11 as long =0
       while objrsx.read()
        fn11=objrsx("filename")
       end while
       dim fn1 as string
       fn1=cstr(fn11+1)

      *** 以上為用戶上傳文件起一個唯一的主文件名
       dim objc1str as string="provider=microsoft.jet.oledb.4.0;
       data source=" & server.mappath("filelist.mdb")

      *** 以上兩行在源碼中為同一語句
       dim objc1 as oledbconnection = new oledbconnection(objc1str)
       dim sql3 as string="insert into files(filename,fsize, xh,filescript,upday)
      values("+cstr(fn1)+","+cstr(fileup.postedfile.contentlength)+",'"
      +xh1+"','"+fileup.postedfile.filename+"','"+cstr(now())+"')"

      *** 以上三行在源碼中為同一語句
       objc1.open()
       dim objrs1 as oledbcommand=new oledbcommand(sql3,objc1)
       dim fn2 as string
       fn2="d:/netspace/spacenet/myspace/"&cstr(fn1)&".zip"

      *** 給出用戶上傳文件的絕對路徑及完整文件名
       fsize.text=cstr(fileup.postedfile.contentlength)
       ftype.text=fileup.postedfile.contenttype
       fname.text=fileup.postedfile.filename
       username.text=user1.value
       fileup.postedfile.saveas(fn2)
       objrs1.ExecuteNonQuery()
       objrs.close
       dim sql5 as string="update userlist set nowspace ="+cstr(nows+fileup.postedfile.contentlength)+
      ",lastaccessday='"+cstr(now())+"' where xh='"+xh1+"'"

      *** 以上兩行在源碼中為同一語句

        dim objrnc as oledbcommand= new oledbcommand(sql5,objconn)
       objrnc.executenonquery()
       respace.text=cstr(maxs-nows-fileup.postedfile.contentlength)&"字節."
       nowspace.text=cstr(nows+fileup.postedfile.contentlength)&"字節."

      *** 以上作上傳動作,并計算用戶的已用總空間及剩余總空間
       end if
      end if
      end sub
      </script>
      <body>
      <form enctype="multipart/form-data" runat="server">
      <table>
      <tr><td>帳號:</td><td><input id="user1" runat="server"></td></tr>
      <tr><td>口令:</td><td><input type="password" id="pass1" runat="server"></td></tr>
      <tr><td>文件:</td><td><input type="file" id="fileup" runat="server"></td></tr>
      <tr><td></td><td><asp:button id="upload" onclick="uploadfile" text="上傳"
      runat="server"/></td></tr>
      </table>
      </form><hr>
      <div id="fileinfo" visible="false" runat="server">
      原文件名:<asp:label id="fname" runat="server"/><br>
      字節大小:<asp:label id="fsize" runat="server"/><br>
      文件類型:<asp:label id="ftype" runat="server"/><br>
      用戶帳號:<asp:label id="username" runat="server"/><br>
      剩余空間:<asp:label id="respace" runat="server"/><br>
      已用空間:<asp:label id="nowspace" runat="server"/><br>
      上傳狀態:<asp:label id="errors" runat="server"/>
      </div>
      *** 以上在瀏覽器中告訴用戶文件上傳前后的相關信息
      </body>
      </html>

        結束語

        本文所述的方法基于無組件技術,在文件的安全性及個人隱私方面考慮的比較多,最適合在windows server 2003配合IIS6.0平臺上使用,方法簡單安全,稍加擴展,如在userlist里添加用戶號、組號,在files里添加組號,即可對文件的權限進行設定,可方便實現文件的網絡提交、驗證、共享。配合磁盤陣列,則在數據安全方面將有質的提升。





      日韩精品一区二区三区高清