我们的经典ASP应用程序使用一个.aspx页面为每个客户端上传图像。 我不熟悉ASP.net,所以这个页面很难理解。
<html>
<head>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script language="VB" RunAt="Server">
Sub Page_Load(Sender As Object, e As EventArgs)
Span1.InnerHtml = "You may not upload a file larger than 250 Kilobytes. Your image must be in JPG format.<br />Please crop your image to 400 pixels high and 300 pixels wide, so that no distortion will occur when displayed.<br /><br />"
End Sub
Sub Upload_Click(Sender As Object, e As EventArgs)
Dim DistributorID As Integer
DistributorID = request.QueryString("distID")
' Display properties of the uploaded file
'Let us recover only the file name from its fully qualified path at client
Dim strFileName As String
strFileName = MyFile.PostedFile.FileName
Dim c As String = CStr(DistributorID) & "." & split(System.IO.Path.GetFileName(strFileName), ".")(1) ' The file name is the distid + the extension
'Let us Save uploaded file to server
If LCase(Split(System.IO.Path.GetFileName(strFileName), ".")(0)) = "" Then
Span1.InnerHtml = "Please select a Photo.<br /><br />"
End If
If LCase(Split(System.IO.Path.GetFileName(strFileName), ".")(1)) <> "jpg" Then
Span1.InnerHtml = "Invalid file format."
Else
If MyFile.PostedFile.ContentLength < 250000 Then
MyFile.PostedFile.SaveAs(ConfigurationSettings.AppSettings("DistImagePath") + c)
Span1.InnerHtml = "Your file imported sucessfully to the server.<br /><br />"
Else
Span1.InnerHtml = "Your file is too large to import.<br /><br />"
End If
End If
End Sub
</script>
</head>
<body>
<span id="Span1" style="color:Red;" RunAt="Server" />
<form method="Post" enctype="Multipart/Form-Data" RunAt="Server" class="stdform stdform2">
Select New Photo: <br />
<input id="MyFile" type="File" runat="Server" size="40" /><br /><br />
<span style="padding-left:25px;">
<button type="Submit" value="Import" OnServerclick="Upload_Click" RunAt="Server">Upload New Photo</button>
</span>
</form>
</body>
如果没有选择文件并按下上传新照片按钮,我会得到一个 “指数数组的边界之外。”错误
如果没有选择照片,我该如何修复此页面以免尝试上传照片?
答案 0 :(得分:1)
If MyFile.PostedFile.ContentLength>0
..
Else
Span1.InnerHtml = "You have not specified a file."
End If
您可以在执行前添加此代码(如果要执行上载文件)
If FileUpload1.HasFile Then
......
Else
Span1.InnerHtml = "You have not specified a file."
End If
答案 1 :(得分:1)
您可以将所有内容都包含在IF中:
IF MyFile.PostedFile.ContentLength>0 Then 'User selected a file
'All your code here
Else
Span1.InnerHtml = "Your did not select a file.<br /><br />"
End IF
完整代码:
Sub Upload_Click(Sender As Object, e As EventArgs)
IF MyFile.PostedFile.ContentLength>0 Then
Dim DistributorID As Integer
DistributorID = request.QueryString("distID")
' Display properties of the uploaded file
'Let us recover only the file name from its fully qualified path at client
Dim strFileName As String
strFileName = MyFile.PostedFile.FileName
Dim c As String = CStr(DistributorID) & "." & split(System.IO.Path.GetFileName(strFileName), ".")(1) ' The file name is the distid + the extension
'Let us Save uploaded file to server
If LCase(Split(System.IO.Path.GetFileName(strFileName), ".")(0)) = "" Then
Span1.InnerHtml = "Please select a Photo.<br /><br />"
End If
If LCase(Split(System.IO.Path.GetFileName(strFileName), ".")(1)) <> "jpg" Then
Span1.InnerHtml = "Invalid file format."
Else
If MyFile.PostedFile.ContentLength < 250000 Then
MyFile.PostedFile.SaveAs(ConfigurationSettings.AppSettings("DistImagePath") + c)
Span1.InnerHtml = "Your file imported sucessfully to the server.<br /><br />"
Else
Span1.InnerHtml = "Your file is too large to import.<br /><br />"
End If
End If
Else
Span1.InnerHtml = "Your did not select a file.<br /><br />"
End IF
End Sub