一个加强的文件上传(VB.Net)

这个文件上传应该可以满足一般的需要了,其中的添加到数据库记录,您可以按需要省略掉。

代码:upload.aspx

1@ Page Language="VB"
1 @ Import Namespace=" System.IO " 
1 @ Import Namespace=" System.DATA " 
1@ import Namespace="System.Data.SqlClient" 
  1<script language="VB" runat="SERVER">   
  2Dim lstrFileFolder as string   
  3Dim lstrFileFolder_1 as string   
  4Dim lstrFileNamePath as string   
  5Dim lstrFileNamePath_1 as string   
  6Sub UploadFile_Clicked ( Sender as Object, e as EventArgs )   
  7Dim lstrFileName as string   
  8  
  9'Dim lstrFileFolder as string   
 10Dim CMDfilename as string '表单cmdfilename的值   
 11CMDfilename = request("CMDfilename")   
 12'''   
 13'''   
 14' 如果上传目录为空,就使用" upload "作为缺省上传目录   
 15' 获得上传到服务器的目录名称   
 16if dir.value <> "" then   
 17lstrFileFolder_1 = dir.value & "/"   
 18lstrFileFolder = trim((Server.MapPath(""))) & "\" & dir.value & "\"   
 19else   
 20lstrFileFolder_1 = "upload/"   
 21lstrFileFolder = trim((Server.MapPath(""))) &"\upload\"   
 22end if   
 23  
 24' 获得文件名称   
 25lstrFileName = loFile.PostedFile.FileName   
 26  
 27' 注: loFile.PostedFile.FileName 返回的是   
 28'通过文件对话框选择的文件名,这之中包含了文件的目录信息   
 29  
 30'只能上传.xls文件   
 31if instr(Path.GetFileName ( lstrFileName ),".xls")=0 and instr(Path.GetFileName ( lstrFileName ),".Xls")=0 and instr(Path.GetFileName ( lstrFileName ),".XLS")=0 then   
 32MessageNotXLS.InnerHtml = "只能上传.xls文件"   
 33MessageNotXLS.Style("color") = "red"   
 34exit sub   
 35end if   
 36  
 37if CMDfilename = "random" then   
 38dim lstrFileName111 as string = Path.GetFileName ( lstrFileName ) '获得原名   
 39lstrFileName=now()   
 40lstrFileName=replace(lstrFileName,"-","")   
 41lstrFileName=replace(lstrFileName,":","")   
 42lstrFileName=replace(lstrFileName," ","")   
 43'lstrFileName=lstrFileName+"."   
 44lstrFileName=lstrFileName & right(Path.GetFileName ( lstrFileName111 ),len(Path.GetFileName ( lstrFileName111 ))-(instr(Path.GetFileName ( lstrFileName111 ),"."))+1)   
 45else   
 46lstrFileName = Path.GetFileName ( lstrFileName )   
 47end if   
 48' 去掉目录信息,返回文件名称   
 49  
 50' 判断上传目录是否存在,不存在就建立   
 51If ( not Directory.Exists ( lstrFileFolder ) ) Then   
 52Directory.CreateDirectory ( lstrFileFolder )   
 53End If   
 54  
 55'上传文件到服务器   
 56lstrFileNamePath = lstrFileFolder & lstrFileName   
 57lstrFileNamePath_1 = lstrFileFolder_1 & lstrFileName   
 58' 得到上传目录及文件名称   
 59loFile.PostedFile.SaveAs ( lstrFileNamePath )   
 60  
 61' 获得并显示上传文件的属性   
 62FileName.Text = lstrFileName   
 63' 获得文件名称   
 64FileType.Text = loFile.PostedFile.ContentType   
 65' 获得文件类型   
 66FileLength.Text = cStr ( loFile.PostedFile.ContentLength )   
 67' 获得文件长度   
 68FileUploadForm.visible = false   
 69AnswerMsg.visible = true   
 70' 显示上传文件属性   
 71AddToDB()   
 72End sub   
 73  
 74'添加记录信息到数据库,可以不要这步。   
 75sub AddToDB()   
 76Dim MyConnection As SQLConnection = New SQLConnection (ConfigurationSettings.AppSettings("ConnStr"))   
 77Dim InsertCmd As String = "insert into chaoqi (title,filepath) values (@title,@filepath)"   
 78Dim MyCommand As SqlCommand = new SqlCommand(InsertCmd, MyConnection)   
 79  
 80MyCommand.Parameters.Add(New SqlParameter("@title", SqlDbType.NVarChar, 50))   
 81MyCommand.Parameters("@title").Value = title.value   
 82MyCommand.Parameters.Add(New SqlParameter("@filepath", SqlDbType.NVarChar, 50))   
 83MyCommand.Parameters("@filepath").Value = lstrFileNamePath_1   
 84MyCommand.Connection.Open()   
 85Try   
 86MyCommand.ExecuteNonQuery()   
 87Message.InnerHtml = "<b>已添加记录</b><br>" & InsertCmd.ToString()   
 88Catch Exp As SQLException   
 89If Exp.Number = 2627   
 90Message.InnerHtml = "错误:已存在具有相同主键的记录"   
 91Else   
 92Message.InnerHtml = "错误:未能添加记录,请确保正确填写了字段"   
 93End If   
 94Message.Style("color") = "red"   
 95  
 96End Try   
 97  
 98MyCommand.Connection.Close()   
 99end sub   
100  
101</script>
 1<html>
 2<head>
 3<title>上传文件</title>
 4<link href="style/main.css" rel="stylesheet" type="text/css"/>
 5</head>
 6<body>
 7<asp:panel id="FileUploadForm" runat="server" visible=" true ">
 8<form enctype="multipart/form-data" method="post" runat="server">
 9<p>
10</p>
11<table border="1" bordercolor="#999999" cellpadding="3" cellspacing="0" rules="cols" style="BORDER-RIGHT: #999999 1px; BORDER-TOP: #999999 1px; BORDER-LEFT: #999999 1px; WIDTH: 100%; BORDER-BOTTOM: #999999 1px; BORDER-COLLAPSE: collapse; BACKGROUND-COLOR: white">
12<tbody>
13<tr>
14<td bgcolor="#000084" colspan="2">
15<font color="#ffffff"><b>超期记录文件上传(Excel文件)</b></font></td>
16</tr>
17<tr>
18<td width="20%">   
19请输入该文件要显示的名称:</td>
20<td>
21<input id="title" runat="server" type="text"/></td>
22</tr>
23<tr>
24<td bgcolor="#cccccc" width="20%">   
25请选择上传到服务器的文件:</td>
26<td bgcolor="#cccccc"><input id="loFile" runat="server" type="file"/></td>
27</tr>
28<tr>
29<td bgcolor="#eeeeee" width="20%">   
30匹配类型:</td>
31<td bgcolor="#eeeeee">   
32随机生成文件名(无重复):   
33<input checked="checked" id="CMDfilename" name="CMDfilename" type="radio" value="random">   
34使用原名(若重复则覆盖):   
35<input id="CMDfilename" name="CMDfilename" type="radio" value="NotRandom">
36</input></input></td>
37</tr>
38<tr>
39<td bgcolor="#cccccc" colspan="2">
40<div class="expandable" level2id="compilerOutputDiv" onclick="OnToggleTOCLevel1()" style="FONT-WEIGHT: bold; CURSOR: hand; COLOR: navy; TEXT-DECORATION: underline">显示高级选项:</div>
41<div id="compilerOutputDiv" style="display: none;">
42<br/><table bgcolor="#ffffcc" width="100%">
43<tr>
44<td>请输入上传到服务器的目录名称:<input id="dir" runat="server" type="text"/>【可以自定义上传目录,形式如:upload_1,将新建一个upload_1目录,请确定您有上传到此目录的权限。当前程序目录:<font color="red"><b>```
45response.write (trim((Server.MapPath(""))))
46```\</b></font>】</td>
47</tr></table></div></td></tr></tbody></table>
48
49
50<tr>
51<td bgcolor="#cccccc" colspan="2">
52<input onserverclick="UploadFile_Clicked" runat="server" type="submit" value="开始上传"/>
53<span enableviewstate="false" id="MessageNotXLS" runat="server" style="font: arial 11pt;"></span></td>
54</tr>
55
56
57</form>
58</asp:panel>
59<asp:panel id="AnswerMsg" runat="server" visible=" false ">
60<meta content="5;URL=Admin_XLS_list.aspx" http-equiv="REFRESH"/>   
61文件上传完成 <br/>   
62成功上传 <asp:label id="FileName" runat="server"></asp:label> <br/>   
63文件大小 <asp:label id="FileLength" runat="server"></asp:label> 字节 <br/> 文件类型 <asp:label id="FileType" runat="server"></asp:label> <br/>   
645秒之后自动返回....   
65<br/>
66<span enableviewstate="false" id="Message" runat="server" style="font: arial 11pt;"></span>
67</asp:panel>
68<script language="JavaScript">   
69function OnToggleTOCLevel1()   
70{   
71var elemSrc = window.event.srcElement;   
72var elemLevel2 = document.all(elemSrc.level2ID);   
73  
74if (elemLevel2.style.display == 'none')   
75{   
76elemLevel2.style.display = '';   
77if (elemSrc.usesGlyph == '1')   
78elemSrc.innerHTML = '&#054;';   
79}   
80else {   
81elemLevel2.style.display = 'none';   
82if (elemSrc.usesGlyph == '1')   
83elemSrc.innerHTML = '&#052;';   
84}   
85}   
86</script>
87</body>
88</html>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus