999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ASP.NET的圖片上傳技術(shù)

2008-04-12 00:00:00
現(xiàn)代電子技術(shù) 2008年10期

摘 要:目前的Web頁(yè)面中都有許多圖片,這些圖片都是精心布局和設(shè)計(jì)的,使得整個(gè)頁(yè)面看起來(lái)更精致美觀。而這些圖片大部分的來(lái)源都是上傳實(shí)現(xiàn)的。在ASP.NET的應(yīng)用中,也常需要服務(wù)器上傳文檔、圖片等文件。在ASP程序中,需要使用第三方組件才能有效地處理圖片的上傳;而在ASP.NET中,通過(guò)使用內(nèi)置組件的方法即可將圖片保存到服務(wù)器中。從實(shí)際應(yīng)用角度,介紹了在ASP.NET中圖片上傳技術(shù)的實(shí)現(xiàn)過(guò)程。

關(guān)鍵詞:ASP.NET;圖片上傳;GetFileName方法

中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:B

文章編號(hào):1004-373X(2008)10-151-04

Picture Uploading Technology of ASP.NET

LIU Yi,YE Qian

(Yan′an University,Yan′an,716000,China)

Abstract:At present,there are many pictures in the Web page,these pictures are arranged and designed painstakingly in order to make the whole page looked more exquisitely.And the main resources of these pictures come by uploading.In the applying of ASP.NET,the server is often used to upload documents,pictures and so on.In the ASP programming,the third-party components are often used to make the uploading picture efficiently.However in the ASP.NET programming,the pictures can be seeded to the servers only by the internal components.From the practical point of view,this article introduces the applying of the process of uploading picture technology.

Keywords:ASP.NET;picture uploading;GetFileName method

目前網(wǎng)絡(luò)上有大量的圖片,也許大家電腦里面也存了不少值得回憶的圖片,特別是有些想拿出來(lái)展示給別人,讓別人來(lái)分享自己的快樂(lè)。有一種簡(jiǎn)單的方法,就是用網(wǎng)頁(yè)開(kāi)發(fā)工具Dreamweaver將圖片放在一個(gè)網(wǎng)頁(yè)中,然后發(fā)布到網(wǎng)上就可以。但是這種方法有一個(gè)缺點(diǎn),就是當(dāng)用戶添加一張新的圖片或者刪除過(guò)期的舊圖時(shí),必須更改頁(yè)面,還要重新發(fā)布,這就顯得特別麻煩。因此,開(kāi)發(fā)設(shè)計(jì)一個(gè)圖片管理系統(tǒng)來(lái)解決了這個(gè)問(wèn)題。在圖片管理系統(tǒng)中,應(yīng)用了圖片上傳的技術(shù),下面給出具體介紹,供大家參考。

1 在ASP.NET中圖片文件上傳的原理及步驟

1.1 選擇本地要上傳到服務(wù)器的文件

ASP.NET具有強(qiáng)大功能,他提供的HTML控制元件,使得可以很容易的通過(guò)一個(gè)對(duì)話框來(lái)選擇要上傳的文件。當(dāng)然你的瀏覽器也必須是IE 3.02 或者Netscape 3.0版本或者比這二者版本更高的瀏覽器。通過(guò)下列語(yǔ)句就可以完成選擇本地一個(gè)文件的操作:

<input id = \" loFile \" type = \" file \" runat = \" server \" >

1.2 為完成上傳,在Form中不使用缺省編碼

為了成功完成文件上傳操作,在Form中的編碼必須用\" multipart/form-data \" ,而不用From的缺省編碼\" application/x-www-form-urlencoded \"。

具體代碼如下:

<form method=\"post\" enctype =\"multipart/form-data\" runat=

\"server\">

</form>

1.3 獲得上傳的文件名及對(duì)磁盤(pán)的操作

為了獲得上傳的文件名稱,必須引入一個(gè)名稱空間(NameSapce)-System.IO。此名稱空間內(nèi)定義了許多關(guān)于文件及磁盤(pán)操作的類,在系統(tǒng)中上傳就是通過(guò)這些類的一些方法和屬性來(lái)完成一些功能。 

1.3.1 獲得上傳文件的名稱 

獲得上傳文件的名稱,使用Path類中的GetFileName方法,具體實(shí)現(xiàn)如下:

lstrFileName = loFile.PostedFile.FileName

說(shuō)明:loFile.PostedFile.FileName 返回的是通過(guò)文件對(duì)話框選擇的文件名,文件名包含了文件的目錄信息。

lstrFileName = Path.GetFileName ( lstrFileName )

說(shuō)明:去掉目錄信息,返回文件名稱。

[BT4+*3]1.3.2 判斷上傳目錄的存在

判斷上傳目錄是否存在,不存在就建立。建立目錄要使用到Directory類中的 CreateDirectory 方法;判斷目錄是否存在要用到 Directory 類中的Exists方法。具體實(shí)現(xiàn)如下:

If (not Directory.Exists(lstrFileFolder)) Then

Directory.CreateDirectory ( lstrFileFolder ) 

End If

說(shuō)明:lstrFileFolder是用戶填入的目錄名稱,或者是缺省的目錄名稱。

1.4 選定文件上傳到服務(wù)器上

在前面操作都已經(jīng)完成以后,就可以上傳文件,上傳文件并不復(fù)雜,用以下語(yǔ)句就可以完成上傳操作。

lstrFileNamePath = lstrFileFolder lstrFileName

說(shuō)明:得到上傳目錄及文件名稱。

loFile.PostedFile.SaveAs (lstrFileNamePath)

說(shuō)明:上傳文件到服務(wù)器。

1.5 獲得并顯示上傳文件的屬性

FileName.Text = lstrFileName

說(shuō)明:獲得文件名稱。

FileType.Text = loFile.PostedFile.ContentType

說(shuō)明:獲得文件類型。

FileLength.Text=cStr(loFile.PostedFile.ContentLength)

說(shuō)明:獲得文件長(zhǎng)度。

FileUploadForm.visible = 1 

AnswerMsg.visible = true

說(shuō)明:顯示上傳文件屬性。

以上就是圖片上傳實(shí)現(xiàn)時(shí),一些比較重要的技術(shù)與方法。

2 用ASP.NET實(shí)現(xiàn)圖片上傳的方法

ASP.NET實(shí)現(xiàn)圖片的上傳的方法很多,下面介紹幾種:

2.1 單文件上傳

單文件上傳是最基本的文件上傳方法,在ASP.net中沒(méi)有FileUpload控件,只有HTML的上傳控件,這時(shí)候要把HTML控件轉(zhuǎn)化為服務(wù)器控件,但很不好用。其實(shí)所有文件上傳的美麗效果都是從這個(gè)FileUpload控件衍生,下面例子雖然簡(jiǎn)單卻是基本的,如圖1所示。

2.2 多文件上傳

多文件上傳是多個(gè)文件上傳的一種方法。如圖2所示。

圖1 單文件上傳示意圖

圖2 多文件上傳示意圖

2.3 客戶端檢查上傳文件類型

客戶端檢查上傳文件類型方法,如圖3所示:

圖3 客戶端檢查上傳文件示意圖

2.4 服務(wù)器端檢查上傳文件類型

服務(wù)器端檢查上傳文件類型方法,如圖4所示:

圖4 服務(wù)器端檢查上傳文件類型示意圖

2.5 服務(wù)器端檢查上傳文件類型及真正文件名

服務(wù)器端檢查上傳文件類型的方法并不好,因?yàn)橛脩艨梢园裍XX.txt偽裝為XXX.jpg,因此要檢測(cè)真正文件名的方法可用下面方法。如圖5所示:

圖5 服務(wù)器端檢查上傳文件(檢測(cè)真正文件名)示意圖

2.6 上傳文件名惟一性處理(時(shí)間戳+SessionID)

上傳文件名惟一性處理的方法是以年月日時(shí)分秒+臨時(shí)session+原文件名方法。如圖6所示:

此外還有上傳圖片生成等比例縮略圖和上傳圖片加水印(文字水印,圖片水印,文字+圖片水印)等方法。[KH-2]

圖6 上傳文件名惟一性處理示意圖

3 實(shí)例說(shuō)明圖片上傳實(shí)現(xiàn)過(guò)程

下面著重介紹一下單文件的圖片上傳,因?yàn)樗亲罨镜纳蟼鞣椒?。其他的上傳方法都是以他為基礎(chǔ)的。以圖片管理系統(tǒng)的圖片上傳為例,說(shuō)明圖片上傳實(shí)現(xiàn)過(guò)程。

3.1 圖片管理系統(tǒng)上傳界面

圖片管理系統(tǒng)中的圖片上傳操作界面如圖7所示:

圖7 文件上傳操作界面示意圖

3.2 上傳圖片源代碼

首先,來(lái)討論upload.ascx用戶控件的頁(yè)面源代碼,該頁(yè)面包含一個(gè)Form,里面是一個(gè)文件選取的file控件和一個(gè)上傳文件的確定按鈕。

3.2.1 前臺(tái)代碼

源代碼:upload.ascx

<%@ Control Language=\"vb\" AutoEventWireup=\"1\" Codebehind

0=\"upload.ascx.vb\" 

Inherits=\"pic.upload\" TargetSchema=\"http://schemas.microsoft.com

/intellisense/ie5\" %>

<form enctype=\"multipart/form-data\" runat=\"server\" ID=\"Form1\">

<div id=\"main\" runat=\"server\" align=\"center\">

<table width=\"100%\" cellpadding=\"4\" bgcolor=\"#99ccff\">

<tr>

<td v align=\"top\" width=\"100%\" align=\"middle\">

<span id=\"upSpan\" runat=\"server\"><FONT face=\"宋體\"></FONT>

</span><input type=\"file\" id=\"filename\" runat=\"server\">

<asp:Button id=\"uploadBtn\" runat=\"server\" OnClick=\"upload-Btn[CD#*2]Click\">

</asp:Button>

</td>

</tr>

</table>

</div>

<div align=\"center\" id=\"pageerr\" runat=\"server\"></div>

</form>

3.2.2 后臺(tái)代碼

源代碼:upload.ascx.vb

′加載文件操作的IO類,以及定義該頁(yè)面控件

Imports System.IO

Public MustInherit Class upload

Inherits System.Web.UI.UserControl

Protected WithEvents filename As System.Web.UI.Html

Controls.

HtmlInputFile

Protected WithEvents upSpan As System.Web.UI.Html

Controls.

HtmlGenericControl

Protected WithEvents uploadBtn As System.Web.UI.Web

Controls.

Button

Protected WithEvents main As System.Web.UI.Html

Controls.

HtmlGenericControl

Protected WithEvents pageerr As System.Web.UI.Html

Controls.

HtmlGenericControl

Public filesize As Int32 = 500

Public uploadText As String = \"上傳文件:\"

Public submitText As String = \"上傳文件\"

Public uploadFolder As String = \"upload\"

該用戶控件的Pag[CD#*2]Load()方法,處理頁(yè)面加載事件。該方法中設(shè)置2個(gè)控件的文本屬性。

Private Sub Page[CD#*2]Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load

′在此處放置初始化頁(yè)的用戶代碼

upSpan.InnerText = uploadText

uploadBtn.Text = submitText

End Sub

(1) uploadBtn[CD#*2]Click( )方法

用uploadBtn[CD#*2]Click()方法處理文件的上傳操作。首先獲得文件的擴(kuò)展名,然后判斷該文件的擴(kuò)展和文件大小是否合法。如果合法,則用年、月、日、小時(shí)、分和秒的組合來(lái)定義保存文件的名字,然后上傳文件到服務(wù)器上,并且給出成功的提示。

Public Sub uploadBtn[CD#*2]Click(ByVal sender As System.Object,ByVal e As

System.EventArgs) Handles uploadBtn.Click

If Not filename.PostedFile Is Nothing Then

Dim sPath As String = Server.MapPath(uploadFolder \"\\\")

Try

′這里是獲得文件的擴(kuò)展名

Dim sfiletype As String

Dim fs As New FileInfo(filename.PostedFile.FileName)

sfiletype = fs.Extension.ToString

′文件擴(kuò)展名活得結(jié)束

If chetype(filename.PostedFile.ContentType,filename.

PostedFile.ContentLength) = 2 Then

Dim savename As String 

savename = Year(Now) Month(Now) Day(Now) Hour(Now) 

Minute(Now) Second(Now) fs.Extension

filename.PostedFile.SaveAs(sPath + savename) 

main.Visible = False

pageerr.InnerHtml = \"上傳成功.<br><a href=upload.aspx>

重新上傳</a>\"

pageerr.InnerHtml += \"<font size=2>圖片上傳成功,請(qǐng)copy

下邊的圖片路徑,以備后用</font><br>\"

pageerr.InnerHtml += uploadFolder + \"/\" + savename

′如果文件擴(kuò)展名或文件大小不滿足條件,根據(jù)錯(cuò)誤給出不同的提示

Else

main.Visible = False

Select Case chetype(filename.PostedFile.ContentType,file-

name.PostedFile.ContentLength)

Case 0

pageerr.InnerHtml = \"你沒(méi)有選擇文件<br><a href=upload.

aspx>重新上傳</a>\"

Case 3

pageerr.InnerHtml = \"你的文件格式錯(cuò)誤<br><a href=upload.

aspx>重新上傳</a>\"

Case 1

pageerr.InnerHtml = \"文件超過(guò)最大限度\" filesize \"<br>

<a href=upload.aspx>重新上傳</a>\"

Case Else

pageerr.InnerHtml = \"上傳文件錯(cuò)誤<br><a href=upload.

aspx>重新上傳</a>\"

End Select

End If

Catch d As Exception

main.Visible = False

pageerr.InnerHtml = \"上傳文件錯(cuò)誤<br>,請(qǐng)?jiān)O(shè)置你的上傳文件夾\" + uploadFolder + \"的權(quán)限,加入ASP.NET用戶,并設(shè)置為允許寫(xiě)?yīng)?/p>

入<br>\" + e.ToString

End Try

End If

End Sub

(2) Chetype( )方法

Chetype()方法,對(duì)文件類型和文件的大小進(jìn)行判斷。如果文件類型為空或文件大小為0。如果文件是jpg、gif、bmp等,或者文件小于500KB,則返回2,說(shuō)明通過(guò)檢測(cè)。

Public Function chetype(Optional ByVal filetype As String = \"\",Optional ByVal fsize As Int32 = 0) As Int32

Dim su As Int32 = 0

If filetype = \"\" Or fsize = 0 Then

Return su ′文件為空

End If

Select Case filetype

Case \"image/gif\"

su = 1

Case \"image/jpg\"

su = 1

Case \"image/bmp\"

su = 1

Case \"application/x-zip-compressed\"

su = 1

Case \"application/octet-stream\"

su = 1

Case Else

su = 3 ′格式錯(cuò)誤

End Select

If su = 1 Then ′大小錯(cuò)誤

If CInt(filename.PostedFile.ContentLength \\ 1024) <

filesize Then

su = 2 ′驗(yàn)證通過(guò)

End If

End If

Return su

End Function

End Class

3.3 圖片上傳運(yùn)行的結(jié)果

上面程序運(yùn)行后得到的結(jié)果如圖8所示:

圖8 圖片上傳運(yùn)行的結(jié)果示意圖

通過(guò)以上的例子可以了解到圖片上傳過(guò)程中的前臺(tái)代碼和后臺(tái)代碼以及如何實(shí)現(xiàn)圖片上傳的整個(gè)過(guò)程。

參 考 文 獻(xiàn)

[1][美] Chris Goode John Kauffman.ASP.NET 1.1入門(mén)經(jīng)典[M].康博,譯.北京:清華大學(xué)出版社,2002.

[2]石志國(guó),劉冬梅,陳上.ASP.NET應(yīng)用教程[M].北京:清華大學(xué)出版社,2005.

[3]楊帆,趙義霞,趙立臻.ASP.NET技術(shù)與應(yīng)用[M].北京:高等教育出版社,2003.

[4]郝剛.ASP.NET 2.0 開(kāi)發(fā)指南[M].北京:人民郵電出版社,2006.

[5]王健南.ASP.NET 網(wǎng)絡(luò)辦公項(xiàng)目解決方案精解[M].北京:航空工業(yè)出版社,2006.

[6]石磊,但正剛.ASP.NET數(shù)據(jù)庫(kù)編程詳解[M].北京:高等教育出版社,2004.

[7][美] Konrad King.SQL編程實(shí)用大全(精華版)[M].杜大鵬,龔小平,史艷輝,等譯. 北京:中國(guó)水利水電出版社,2005.

[8]Greg Buczek.ASP.NET Tips Techniques.McGraw-Hill.2003.

[9]東方人華.SQL Server 2000與Visual Basic.NET數(shù)據(jù)庫(kù)入門(mén)與提高[M].北京:清華大學(xué)出版社,2002.

[10]陳嫻,劉志寶,李岱.ASP.NET項(xiàng)目開(kāi)發(fā)實(shí)踐[M].2版.北京:中國(guó)鐵道出版社,2005.

[11][意] Dino Esposito.精通ASP.NET程序設(shè)計(jì)[M].羅兵,顧雁宏,詹文軍,譯.北京:清華大學(xué)出版社,2006.

[12]陳峰棋.深入淺出ASP.NET程序設(shè)計(jì)[M].北京:中國(guó)水利出版社,2005.

作者簡(jiǎn)介

劉 翼 男,1982年出生,助教,2003年畢業(yè)于延安大學(xué)。主要研究方向?yàn)榫W(wǎng)絡(luò)應(yīng)用、軟件工程、計(jì)算機(jī)應(yīng)用等。葉 倩 女,1982年出生, 2004年畢業(yè)于西安空軍工程大學(xué)。主要研究方向?yàn)檐浖こ?、?jì)算機(jī)應(yīng)用。

注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文。

主站蜘蛛池模板: 国产精品不卡永久免费| 亚洲v日韩v欧美在线观看| 久久综合九九亚洲一区| 在线观看视频一区二区| 国产激情无码一区二区APP| 国产不卡国语在线| 在线a视频免费观看| 99这里只有精品免费视频| 国产精品无码AV中文| 国产精品入口麻豆| 波多野结衣国产精品| 99热线精品大全在线观看| 免费在线一区| 韩日午夜在线资源一区二区| 亚洲精品777| 国产丝袜啪啪| 白浆免费视频国产精品视频| 欧美国产精品不卡在线观看 | 欧美日韩精品在线播放| 在线观看热码亚洲av每日更新| www中文字幕在线观看| 亚洲天堂免费| 国产9191精品免费观看| 色婷婷电影网| 国产高清色视频免费看的网址| 国产极品美女在线观看| 嫩草影院在线观看精品视频| 亚洲精品桃花岛av在线| 欧美精品啪啪| 中文国产成人精品久久| 国产亚洲第一页| 日本亚洲成高清一区二区三区| 在线免费无码视频| 日本AⅤ精品一区二区三区日| 麻豆国产精品一二三在线观看| 免费一级毛片在线播放傲雪网| 国产精品无码一二三视频| 国产精品熟女亚洲AV麻豆| 日韩精品亚洲一区中文字幕| 18禁高潮出水呻吟娇喘蜜芽| 精品一区二区无码av| 成人在线不卡视频| 国产精品冒白浆免费视频| 91香蕉视频下载网站| 久久狠狠色噜噜狠狠狠狠97视色| 久草视频精品| 青青网在线国产| 波多野结衣国产精品| 亚洲免费福利视频| 一区二区三区四区精品视频 | 久久综合成人| 怡红院美国分院一区二区| 久久黄色免费电影| 伊人久久综在合线亚洲91| 亚洲精品高清视频| 久热re国产手机在线观看| 片在线无码观看| 国产亚洲精品自在久久不卡 | 第九色区aⅴ天堂久久香| www.精品国产| 日韩av资源在线| 欧美一级高清免费a| 91在线精品免费免费播放| 国产一区二区福利| 亚洲男人的天堂网| а∨天堂一区中文字幕| 中文字幕人成乱码熟女免费| 亚洲精品在线影院| 国产精品九九视频| 亚洲第一区欧美国产综合| 国产91麻豆免费观看| 99视频精品在线观看| 精品国产Ⅴ无码大片在线观看81| 国产精品视频白浆免费视频| 天堂久久久久久中文字幕| 尤物亚洲最大AV无码网站| 欧美激情第一区| 美臀人妻中出中文字幕在线| 在线观看无码a∨| 亚洲欧美精品日韩欧美| 91视频99| 91免费观看视频|