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

该博客提供了一个用VB实现文件上传的代码示例,可满足一般文件上传需求。代码中包含文件类型限制、文件名处理、上传目录创建等功能,还可选择将上传记录添加到数据库,同时给出了上传成功后的信息显示及页面跳转逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

代码:upload.aspx

<%@PageLanguage="VB"%>
<%@ImportNamespace="System.IO"%>
<%@ImportNamespace="System.DATA"%>
<%@importNamespace="System.Data.SqlClient"%>
<SCRIPTLANGUAGE="VB"RUNAT="SERVER">
DimlstrFileFolderasstring
DimlstrFileFolder_1asstring
  DimlstrFileNamePathasstring
  DimlstrFileNamePath_1asstring
 SubUploadFile_Clicked(SenderasObject,easEventArgs)
  DimlstrFileNameasstring

  'DimlstrFileFolderasstring
DimCMDfilenameasstring'表单cmdfilename的值
CMDfilename=request("CMDfilename")
'''
'''
  '如果上传目录为空,就使用"upload"作为缺省上传目录
  '获得上传到服务器的目录名称
  ifdir.value<>""then
   lstrFileFolder_1=dir.value&"/"
lstrFileFolder=trim((Server.MapPath("")))&"\"&dir.value&"\"
  else
lstrFileFolder_1="upload/"
   lstrFileFolder=trim((Server.MapPath("")))&"\upload\"
  endif

  '获得文件名称
  lstrFileName=loFile.PostedFile.FileName

   '注:loFile.PostedFile.FileName返回的是
   '通过文件对话框选择的文件名,这之中包含了文件的目录信息

'只能上传.xls文件
ifinstr(Path.GetFileName(lstrFileName),".xls")=0andinstr(Path.GetFileName(lstrFileName),".Xls")=0andinstr(Path.GetFileName(lstrFileName),".XLS")=0then
MessageNotXLS.InnerHtml="只能上传.xls文件"
MessageNotXLS.Style("color")="red"
exitsub
endif

ifCMDfilename="random"then
dimlstrFileName111asstring=Path.GetFileName(lstrFileName)'获得原名
lstrFileName=now()
lstrFileName=replace(lstrFileName,"-","")
lstrFileName=replace(lstrFileName,":","")
lstrFileName=replace(lstrFileName,"","")
'lstrFileName=lstrFileName+"."
lstrFileName=lstrFileName&right(Path.GetFileName(lstrFileName111),len(Path.GetFileName(lstrFileName111))-(instr(Path.GetFileName(lstrFileName111),"."))+1)
else
  lstrFileName=Path.GetFileName(lstrFileName)
endif
   '去掉目录信息,返回文件名称

  '判断上传目录是否存在,不存在就建立
  If(notDirectory.Exists(lstrFileFolder))Then
   Directory.CreateDirectory(lstrFileFolder)
  EndIf

   '上传文件到服务器
  lstrFileNamePath=lstrFileFolder&lstrFileName
lstrFileNamePath_1=lstrFileFolder_1&lstrFileName
   '得到上传目录及文件名称
  loFile.PostedFile.SaveAs(lstrFileNamePath)

   '获得并显示上传文件的属性
  FileName.Text=lstrFileName
   '获得文件名称
  FileType.Text=loFile.PostedFile.ContentType
   '获得文件类型
  FileLength.Text=cStr(loFile.PostedFile.ContentLength)
   '获得文件长度
  FileUploadForm.visible=false
  AnswerMsg.visible=true
   '显示上传文件属性
AddToDB()
  Endsub

'添加记录信息到数据库,可以不要这步。
subAddToDB()
DimMyConnectionAsSQLConnection=NewSQLConnection(ConfigurationSettings.AppSettings("ConnStr"))
DimInsertCmdAsString="insertintochaoqi(title,filepath)values(@title,@filepath)"
DimMyCommandAsSqlCommand=newSqlCommand(InsertCmd,MyConnection)

MyCommand.Parameters.Add(NewSqlParameter("@title",SqlDbType.NVarChar,50))
MyCommand.Parameters("@title").Value=title.value
MyCommand.Parameters.Add(NewSqlParameter("@filepath",SqlDbType.NVarChar,50))
MyCommand.Parameters("@filepath").Value=lstrFileNamePath_1
MyCommand.Connection.Open()
Try
MyCommand.ExecuteNonQuery()
Message.InnerHtml="<b>已添加记录</b><br>"&InsertCmd.ToString()
CatchExpAsSQLException
IfExp.Number=2627
Message.InnerHtml="错误:已存在具有相同主键的记录"
Else
Message.InnerHtml="错误:未能添加记录,请确保正确填写了字段"
EndIf
Message.Style("color")="red"

EndTry

MyCommand.Connection.Close()
endsub

</SCRIPT>
<html>
<head>
<title>上传文件</title>
<linkhref="style/main.css"type="text/css"rel="stylesheet"/>
</head>
<BODY>
<ASP:panelid="FileUploadForm"visible="true"runat="server">
<formmethod="post"enctype="multipart/form-data"runat="server">
<p>
</p>
<tablestyle="BORDER-RIGHT:#9999991px;BORDER-TOP:#9999991px;BORDER-LEFT:#9999991px;WIDTH:100%;BORDER-BOTTOM:#9999991px;BORDER-COLLAPSE:collapse;BACKGROUND-COLOR:white"bordercolor="#999999"cellspacing="0"cellpadding="3"rules="cols"border="1">
<tbody>
<tr>
<tdbgcolor="#000084"colspan="2">
<fontcolor="#ffffff"><b>超期记录文件上传(Excel文件)</b></font></td>
</tr>
<tr>
<tdwidth="20%">
请输入该文件要显示的名称:</td>
<td>
<inputid="title"type="text"runat="server"></td>
</tr>
<tr>
<tdwidth="20%"bgcolor="#cccccc">
请选择上传到服务器的文件:</td>
<tdbgcolor="#cccccc"><inputid="loFile"type="file"runat="server"></td>
</tr>
<tr>
<tdwidth="20%"bgcolor="#eeeeee">
匹配类型:</td>
<tdbgcolor="#eeeeee">
随机生成文件名(无重复):
<inputtype="radio"checked="checked"value="random"name="CMDfilename"id="CMDfilename"/>
使用原名(若重复则覆盖):
<inputtype="radio"value="NotRandom"name="CMDfilename"id="CMDfilename"/>
</td>
</tr>
<tr>
<tdbgcolor="#cccccc"colspan="2">
<divclass="expandable"onclick="OnToggleTOCLevel1()"level2ID="compilerOutputDiv"style="FONT-WEIGHT:bold;CURSOR:hand;COLOR:navy;TEXT-DECORATION:underline">显示高级选项:</div>
<divid="compilerOutputDiv"style="display:none;">
<br><tablewidth=100%bgcolor="#ffffcc">
<tr>
<td>请输入上传到服务器的目录名称:<inputid="dir"type="text"runat="server">【可以自定义上传目录,形式如:upload_1,将新建一个upload_1目录,请确定您有上传到此目录的权限。当前程序目录:<fontcolor=red><b><%response.write(trim((Server.MapPath(""))))%>\</b></font>】</td>
</td></tr></table></div>
</td>
</tr>
<tr>
<tdbgcolor="#cccccc"colspan="2">
 <inputtype="submit"value="开始上传"OnServerClick="UploadFile_Clicked"runat="server">
<spanid="MessageNotXLS"EnableViewState="false"style="font:arial11pt;"runat="server"/></td>
</tr>
</tbody>
</table>
</form>
</ASP:panel>

<ASP:panelid="AnswerMsg"visible="false"runat="server">
<METAHTTP-EQUIV=REFRESHCONTENT='5;URL=Admin_XLS_list.aspx'>
 文件上传完成<br>
 成功上传<ASP:labelid="FileName"runat="server"/><br>
 文件大小<ASP:labelid="FileLength"runat="server"/>字节<br> 文件类型<ASP:labelid="FileType"runat="server"/><br>
5秒之后自动返回....
<br>
<spanid="Message"EnableViewState="false"style="font:arial11pt;"runat="server"/>
</ASP:panel>

<scriptlanguage="JavaScript">
functionOnToggleTOCLevel1()
{
varelemSrc=window.event.srcElement;
varelemLevel2=document.all(elemSrc.level2ID);

if(elemLevel2.style.display=='none')
{
elemLevel2.style.display='';
if(elemSrc.usesGlyph=='1')
elemSrc.innerHTML='&#054;';
}
else{
elemLevel2.style.display='none';
if(elemSrc.usesGlyph=='1')
elemSrc.innerHTML='&#052;';
}
}
</script>

</BODY>
</HTML>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值