ASP.Net VB文件上传

时间:2014-05-11 10:13:57

标签: asp.net vb.net file file-upload

我正在制作一个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">
                &nbsp;</td>
            <td class="style2">
                &nbsp;</td>
            <td>
                &nbsp;</td>
        </tr>
        <tr>
            <td class="style1">
                &nbsp;</td>
            <td class="style2">
                &nbsp;</td>
            <td>
                &nbsp;</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>

谢谢

1 个答案:

答案 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