我正在制作一个ASP.Net VB Web应用程序,我正在尝试将文件上传到服务器。有一个模态弹出窗口,弹出窗口内显示图像(如果存在),如果不存在则可以上传图像。麻烦的是每当我点击上传按钮时都没有文件上传。页面刷新,弹出窗口消失。我只是想要它,所以至少文件上传正确。
这是弹出窗口的asp代码
<div id="openModal" class="modalDialog">
<div>
<a href="#close" title="Close" class="close">X</a>
<h2>Transaction Recipt</h2>Transaction ID:
<asp:Label ID="Label2" runat="server" Text=''></asp:Label>
<br /><br />
<asp:Image ID="Image1" runat="server" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br /><br />
<br />
<asp:FileUpload id="FileUploadControl" runat="server" />
<br /><br />
<asp:Button ID="Button2" runat="server" Text="Upload" OnClick = "Button_Upload" CommandArgument = '<%# Eval("Row") %>' Width="75" /><br>
<asp:Label ID="Label3" runat="server" Text=""></asp:Label>
</div>
这是文件上传的vb代码
Protected Sub Button_Upload(ByVal sender As Object, ByVal e As EventArgs)
If FileUploadControl.HasFile Then
Try
FileUploadControl.SaveAs("~\Images\" & _
FileUploadControl.FileName)
Label1.Text = "File name: " & _
FileUploadControl.PostedFile.FileName & "<br>" & _
"File Size: " & _
FileUploadControl.PostedFile.ContentLength & " kb<br>" & _
"Content type: " & _
FileUploadControl.PostedFile.ContentType
Catch ex As Exception
Label1.Text = "ERROR: " & ex.Message.ToString()
End Try
Else
Label1.Text = "You have not specified a file."
End If
End Sub
这是整个页面的asp代码,以备不时之需
<%@ Page Title="" Language="VB" MasterPageFile="~/Admin.master" AutoEventWireup="false"
CodeFile="Ledger.aspx.vb" Inherits="Admin_Accounting_Ledger" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
<link href="../../Styles/Admin.css" rel="Stylesheet" type="text/css" />
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [Account] FROM [Accounts]"></asp:SqlDataSource>
<table style="width:100%;">
<tr>
<td class="style1">
<asp:DropDownList ID="DropDownList1" runat="server" ViewStateMode="Enabled"
Width="241px" AutoPostBack="True" DataSourceID="SqlDataSource1"
DataTextField="Account" DataValueField="Account">
</asp:DropDownList>
<br />
</td>
<td class="style2">
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"
BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px"
CellPadding="2" DataSourceID="SqlDataSource3" ForeColor="Black"
GridLines="None" Height="30px" Width="241px">
<AlternatingRowStyle BackColor="PaleGoldenrod" />
<EditRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />
<Fields>
<asp:BoundField DataField="Column1" HeaderText="Account Total" ReadOnly="True"
SortExpression="Column1" />
</Fields>
<FooterStyle BackColor="Tan" />
<HeaderStyle BackColor="Tan" Font-Bold="True" />
<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue"
HorizontalAlign="Center" />
</asp:DetailsView>
</td>
<td>
<asp:Button ID="Button1" runat="server" Text="Add Transaction"
BackColor="#CCCCCC" />
</td>
</tr>
<tr>
<td class="style1">
</td>
<td class="style2">
</td>
<td>
</td>
</tr>
<tr>
<td class="style1">
</td>
<td class="style2">
</td>
<td>
</td>
</tr>
</table>
<asp:SqlDataSource ID="SqlDataSource3" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT SUM(Amount) FROM Transactions WHERE ([Account] LIKE '%' + @Account + '%')">
<SelectParameters>
<asp:QueryStringParameter Name="Account" QueryStringField="id" />
</SelectParameters>
</asp:SqlDataSource>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource2">
<ItemTemplate>
<table style="width: 100%;">
<tr>
<td align="center" width="150px">
<%# Eval("Date")%>
</td>
<td align="center" width="200px">
<%# Eval("Category")%>
</td>
<td align="center" >
<%# Eval("Amount")%>
</td>
<td align="Right" >
<asp:Button ID="Button2" runat="server" Text="Reciept" OnClick = "Button_Reciept" CommandArgument = '<%# Eval("Row") %>' Width="75" /><br>
</td>
</tr>
</table>
<br/>
</ItemTemplate>
</asp:Repeater>
<div id="openModal" class="modalDialog">
<div>
<a href="#close" title="Close" class="close">X</a>
<h2>Transaction Recipt</h2>Transaction ID:
<asp:Label ID="Label2" runat="server" Text=''></asp:Label>
<br /><br />
<asp:Image ID="Image1" runat="server" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br /><br />
<br />
<asp:FileUpload id="FileUploadControl" runat="server" />
<br /><br />
<asp:Button ID="Button2" runat="server" Text="Upload" OnClick = "Button_Upload" CommandArgument = '<%# Eval("Row") %>' Width="75" /><br>
<asp:Label ID="Label3" runat="server" Text=""></asp:Label>
</div>
</div>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [Date], [Amount], [Category], [Row] FROM [Transactions] WHERE ([Account] LIKE '%' + @Account + '%') ORDER BY Date DESC">
<SelectParameters>
<asp:QueryStringParameter Name="Account" QueryStringField="id" Type="String" />
</SelectParameters>
</asp:SqlDataSource>
</asp:Content>
谢谢
答案 0 :(得分:0)
1-如果您使用的是更新面板,则应使用回发后触发器。 2-在后面的代码中,您应该使用视图状态(属性)来存储文件名和路径,然后将其添加到您的数据库中。 3-在你的情况下,我认为在选择上传的文件后,你有一个地方回帖页面 - 跟踪代码 -
基本上你只能保存数据库上的扩展名,以及它自己在解决方案上的图像,所以你可以像你说的那样调用它...你可以做类似的事情(代码用于员工图像)
If .EmpImagePath <> Nothing Then
FileFullPath = .EmpImagePath
Dim imgURL As String = Convert.ToBase64String(ConvertImageFiletoBytes(.EmpImagePath))
Dim imgSrc As String = String.Format("data:/image/gif;base64,{0}", imgURL)
EmpImg.ImageUrl = imgSrc
Else
If .Gender = "f" Then
EmpImg.ImageUrl = "~/images/no_photo_female.jpg"
Else
EmpImg.ImageUrl = "~/images/nophoto.jpg"
End If
End If