前臺代碼:javascript
<
body
>
<
form
id
="form1"
runat
="server"
>
<
div
>
<
table
>
<
tr
>
<
td
colspan
="2"
style
="height: 21px"
>
使用標準HTML來進行圖片上傳
</
td
>
</
tr
>
<
tr
>
<
td
style
="width: 400px"
>
<
input
id
="InputFile"
style
="width: 399px"
type
="file"
runat
="server"
/></
td
>
<
td
style
="width: 80px"
>
<
asp:Button
ID
="UploadButton"
runat
="server"
Text
="上傳圖片"
OnClick
="UploadButton_Click"
/></
td
>
</
tr
>
<
tr
>
<
td
colspan
="2"
>
<
asp:Label
ID
="Lb_Info"
runat
="server"
ForeColor
="Red"
></
asp:Label
></
td
>
</
tr
>
</
table
>
</
div
>
</
form
>
</
body
>
後臺代碼:html
using
System;
using
System.Data;
using
System.Configuration;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
public
partial
class
_Default : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
protected
void
UploadButton_Click(
object
sender, EventArgs e)
{
string
uploadName
=
InputFile.Value;
//
獲取待上傳圖片的完整路徑,包括文件名
//
string uploadName = InputFile.PostedFile.FileName;
string
pictureName
=
""
;
//
上傳後的圖片名,以當前時間爲文件名,確保文件名沒有重複
if
(InputFile.Value
!=
""
)
{
int
idx
=
uploadName.LastIndexOf(
"
.
"
);
string
suffix
=
uploadName.Substring(idx);
//
得到上傳的圖片的後綴名
pictureName
=
DateTime.Now.Ticks.ToString()
+
suffix;
}
try
{
if
(uploadName
!=
""
)
{
string
path
=
Server.MapPath(
"
~/images/
"
);
InputFile.PostedFile.SaveAs(path
+
pictureName);
}
}
catch
(Exception ex)
{
Response.Write(ex);
}
}
}
![](http://static.javashuo.com/static/loading.gif)
2 單文件上傳java
這是最基本的文件上傳,在asp.net1.x中沒有這個FileUpload控件,只有html的上傳控件,那時候要把html控件轉化爲服務器控件,很很差用。其實全部文件上傳的美麗效果都是從這個FileUpload控件衍生,第一個例子雖然簡單倒是根本。服務器
前臺代碼:asp.net
<
body
>
<
form
id
="form1"
runat
="server"
>
<
div
>
<
table
style
="width: 90%"
>
<
tr
>
<
td
style
="width: 159px"
colspan
=2
>
<
strong
><
span
style
="font-size: 10pt"
>
最簡單的單文件上傳
</
span
></
strong
></
td
>
</
tr
>
<
tr
>
<
td
style
="width: 600px"
>
<
asp:FileUpload
ID
="FileUpload1"
runat
="server"
Width
="600px"
/></
td
>
<
td
align
=left
>
<
asp:Button
ID
="FileUpload_Button"
runat
="server"
Text
="上傳圖片"
OnClick
="FileUpload_Button_Click"
/></
td
>
</
tr
>
<
tr
>
<
td
colspan
=2
>
<
asp:Label
ID
="Upload_info"
runat
="server"
ForeColor
="Red"
Width
="767px"
></
asp:Label
></
td
>
</
tr
>
</
table
>
</
div
>
</
form
>
</
body
>
後臺代碼:post
using
System;
using
System.Data;
using
System.Configuration;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
public
partial
class
_Default : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
protected
void
FileUpload_Button_Click(
object
sender, EventArgs e)
{
try
{
if
(FileUpload1.PostedFile.FileName
==
""
)
//
if (FileUpload1.FileName == "")
//
if (!FileUpload1.HasFile)
//
獲取一個值,該值指示 System.Web.UI.WebControls.FileUpload 控件是否包含文件。包含文件,則爲 true;不然爲 false。
{
this
.Upload_info.Text
=
"
請選擇上傳文件!
"
;
}
else
{
string
filepath
=
FileUpload1.PostedFile.FileName;
//
獲得的是文件的完整路徑,包括文件名,如:C:\Documents and Settings\Administrator\My Documents\My Pictures\20022775_m.jpg
//
string filepath = FileUpload1.FileName;
//
獲得上傳的文件名20022775_m.jpg
string
filename
=
filepath.Substring(filepath.LastIndexOf(
"
\\
"
)
+
1
);
//
20022775_m.jpg
string
serverpath
=
Server.MapPath(
"
~/images/
"
)
+
filename;
//
取得文件在服務器上保存的位置C:\Inetpub\wwwroot\WebSite1\images\20022775_m.jpg
FileUpload1.PostedFile.SaveAs(serverpath);
//
將上傳的文件另存爲
this
.Upload_info.Text
=
"
上傳成功!
"
;
}
}
catch
(Exception ex)
{
this
.Upload_info.Text
=
"
上傳發生錯誤!緣由是:
"
+
ex.ToString();
}
}
}
![](http://static.javashuo.com/static/loading.gif)
3 多文件上傳this
前臺代碼:spa
<
body
>
<
form
id
="form1"
runat
="server"
>
<
div
>
<
table
style
="width: 343px"
>
<
tr
>
<
td
style
="width: 100px"
>
多文件上傳
</
td
>
<
td
style
="width: 100px"
>
</
td
>
</
tr
>
<
tr
>
<
td
style
="width: 100px"
>
<
asp:FileUpload
ID
="FileUpload1"
runat
="server"
Width
="475px"
/>
</
td
>
<
td
style
="width: 100px"
>
</
td
>
</
tr
>
<
tr
>
<
td
style
="width: 100px"
>
<
asp:FileUpload
ID
="FileUpload2"
runat
="server"
Width
="475px"
/></
td
>
<
td
style
="width: 100px"
>
</
td
>
</
tr
>
<
tr
>
<
td
style
="width: 100px"
>
<
asp:FileUpload
ID
="FileUpload3"
runat
="server"
Width
="475px"
/></
td
>
<
td
style
="width: 100px"
>
</
td
>
</
tr
>
<
tr
>
<
td
style
="width: 100px"
>
<
asp:Button
ID
="bt_upload"
runat
="server"
OnClick
="bt_upload_Click"
Text
="一塊兒上傳"
/>
<
asp:Label
ID
="lb_info"
runat
="server"
ForeColor
="Red"
Width
="448px"
></
asp:Label
></
td
>
<
td
style
="width: 100px"
>
</
td
>
</
tr
>
</
table
>
</
div
>
</
form
>
</
body
>
後臺代碼:.net
using
System;
using
System.Data;
using
System.Configuration;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
public
partial
class
_Default : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
protected
void
bt_upload_Click(
object
sender, EventArgs e)
{
if
(FileUpload1.PostedFile.FileName
==
""
&&
FileUpload2.PostedFile.FileName
==
""
&&
FileUpload3.PostedFile.FileName
==
""
)
{
this
.lb_info.Text
=
"
請選擇文件!
"
;
}
else
{
HttpFileCollection myfiles
=
Request.Files;
for
(
int
i
=
0
; i
<
myfiles.Count; i
++
)
{
HttpPostedFile mypost
=
myfiles[i];
try
{
if
(mypost.ContentLength
>
0
)
{
string
filepath
=
mypost.FileName;
//
C:\Documents and Settings\Administrator\My Documents\My Pictures\20022775_m.jpg
string
filename
=
filepath.Substring(filepath.LastIndexOf(
"
\\
"
)
+
1
);
//
20022775_m.jpg
string
serverpath
=
Server.MapPath(
"
~/images/
"
)
+
filename;
//
C:\Inetpub\wwwroot\WebSite2\images\20022775_m.jpg
mypost.SaveAs(serverpath);
this
.lb_info.Text
=
"
上傳成功!
"
;
}
}
catch
(Exception ex)
{
this
.lb_info.Text
=
"
上傳發生錯誤!緣由:
"
+
ex.Message.ToString();
}
}
}
}
}
4 客戶端檢查上傳文件類型(以上傳圖片爲例)
code
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Default.aspx.cs
"
Inherits
=
"
_Default
"
%>
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
<
head
runat
="server"
>
<
title
>
客戶端檢查上傳文件類型
</
title
>
<
script
language
="javascript"
>
function
Check_FileType()
{
var
str
=
document.getElementById(
"
FileUpload1
"
).value;
var
pos
=
str.lastIndexOf(
"
.
"
);
var
lastname
=
str.substring(pos,str.length);
if
(lastname.toLowerCase()
!=
"
.jpg
"
&&
lastname.toLowerCase()
!=
"
.gif
"
)
{
alert(
"
您上傳的文件類型爲
"
+
lastname
+
"
,圖片必須爲.jpg,.gif類型
"
);
return
false
;
}
else
{
return
true
;
}
}
</
script
>
</
head
>
<
body
>
<
form
id
="form1"
runat
="server"
>
<
div
>
<
table
>
<
tr
>
<
td
colspan
="2"
>
客戶端檢查上傳文件類型
</
td
>
</
tr
>
<
tr
>
<
td
style
="width: 444px"
>
<
asp:FileUpload
ID
="FileUpload1"
runat
="server"
Width
="432px"
/></
td
>
<
td
style
="width: 80px"
>
<
asp:Button
ID
="bt_upload"
runat
="server"
Text
="上傳圖片"
OnClick
="bt_upload_Click"
OnClientClick
="return Check_FileType()"
/></
td
>
</
tr
>
<
tr
>
<
td
colspan
="2"
style
="height: 21px"
>
<
asp:Label
ID
="lb_info"
runat
="server"
ForeColor
="Red"
Width
="515px"
></
asp:Label
></
td
>
</
tr
>
</
table
>
</
div
>
</
form
>
</
body
>
</
html
>
注意:點擊上傳時先觸發客戶端事件OnClientClick="return Check_FileType()"
using
System;
using
System.Data;
using
System.Configuration;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
public
partial
class
_Default : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
protected
void
bt_upload_Click(
object
sender, EventArgs e)
{
try
{
if
(FileUpload1.PostedFile.FileName
==
""
)
{
this
.lb_info.Text
=
"
請選擇文件!
"
;
}
else
{
string
filepath
=
FileUpload1.PostedFile.FileName;
//
if (!IsAllowedExtension(FileUpload1))
//
{
//
this.lb_info.Text = "上傳文件格式不正確!";
//
}
if
(IsAllowedExtension(FileUpload1)
==
true
)
{
string
filename
=
filepath.Substring(filepath.LastIndexOf(
"
\\
"
)
+
1
);
string
serverpath
=
Server.MapPath(
"
~/images/
"
)
+
filename;
FileUpload1.PostedFile.SaveAs(serverpath);
this
.lb_info.Text
=
"
上傳成功!
"
;
}
else
{
this
.lb_info.Text
=
"
請上傳圖片!
"
;
}
}
}
catch
(Exception ex)
{
this
.lb_info.Text
=
"
上傳發生錯誤!緣由:
"
+
ex.ToString();
}
}
private
static
bool
IsAllowedExtension(FileUpload upfile)
{
string
strOldFilePath
=
""
;
string
strExtension
=
""
;
string
[] arrExtension
=
{
"
.gif
"
,
"
.jpg
"
,
"
.bmp
"
,
"
.png
"
};
if
(upfile.PostedFile.FileName
!=
string
.Empty)
{
strOldFilePath
=
upfile.PostedFile.FileName;
//
得到文件的完整路徑名
strExtension
=
strOldFilePath.Substring(strOldFilePath.LastIndexOf(
"
.
"
));
//
得到文件的擴展名,如:.jpg
for
(
int
i
=
0
; i
<
arrExtension.Length; i
++
)
{
if
(strExtension.Equals(arrExtension[i]))
{
return
true
;
}
}
}
return
false
;
}
}
注意:若去掉客戶端的腳本和客戶端事件OnClientClick="return Check_FileType()",在後臺代碼
改成:
if
(
!
IsAllowedExtension(FileUpload1))
{
this
.lb_info.Text
=
"
上傳文件格式不正確!
"
;
}
else
if
(IsAllowedExtension(FileUpload1)
==
true
)
即變成服務器端檢查上傳文件類型。
5 服務器端檢查上傳文件的類型(文件內部真正的格式)
<
body
>
<
form
id
="form1"
runat
="server"
>
<
div
>
<
table
>
<
tr
>
<
td
colspan
="2"
>
服務器檢查上傳文件類型
</
td
>
</
tr
>
<
tr
>
<
td
style
="width: 444px"
>
<
asp:FileUpload
ID
="FileUpload1"
runat
="server"
Width
="432px"
/></
td
>
<
td
style
="width: 80px"
>
<
asp:Button
ID
="bt_upload"
runat
="server"
Text
="上傳圖片"
OnClick
="bt_upload_Click"
/></
td
>
</
tr
>
<
tr
>
<
td
colspan
="2"
style
="height: 21px"
>
<
asp:Label
ID
="lb_info"
runat
="server"
ForeColor
="Red"
Width
="515px"
></
asp:Label
></
td
>
</
tr
>
</
table
>
</
div
>
</
form
>
</
body
>
後臺代碼:
using
System;
using
System.Data;
using
System.Configuration;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
System.IO;
public
partial
class
_Default : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
protected
void
bt_upload_Click(
object
sender, EventArgs e)
{
try
{
if
(FileUpload1.PostedFile.FileName
==
""
)
{
this
.lb_info.Text
=
"
請選擇文件!
"
;
}
else
{
string
filepath
=
FileUpload1.PostedFile.FileName;
if
(IsAllowedExtension(FileUpload1)
==
true
)
{
string
filename
=
filepath.Substring(filepath.LastIndexOf(
"
\\
"
)
+
1
);
string
serverpath
=
Server.MapPath(
"
images/
"
)
+
filename;
FileUpload1.PostedFile.SaveAs(serverpath);
this
.lb_info.Text
=
"
上傳成功!
"
;
}
else
{
this
.lb_info.Text
=
"
請上傳圖片
"
;
}
}
}
catch
(Exception error)
{
this
.lb_info.Text
=
"
上傳發生錯誤!緣由:
"
+
error.ToString();
}
}
private
static
bool
IsAllowedExtension(FileUpload upfile)
{
FileStream fs
=
new
FileStream(upfile.PostedFile.FileName, FileMode.Open, FileAccess.Read);
BinaryReader r
=
new
BinaryReader(fs);
string
fileclass
=
""
;
byte
buffer;
try
{
buffer
=
r.ReadByte();
fileclass
=
buffer.ToString();
buffer
=
r.ReadByte();
fileclass
+=
buffer.ToString();
}
catch
{
}
r.Close();
fs.Close();
if
(fileclass
==
"
255216
"
||
fileclass
==
"
7173
"
||
fileclass
==
"
6677
"
||
fileclass
==
"
13780
"
)
//
說明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar
{
return
true
;
}
else
{
return
false
;
}
}
}
轉自: http://blog.csdn.net/qing0991/archive/2008/09/06/2890654.aspx