2017-10-03 2 views
0

Ich versuche eine Website zu erstellen, die es dem Benutzer ermöglicht, einen Song hochzuladen und jeden Song herunterzuladen, der hochgeladen wurde. Ich verwende MySQL, um hochgeladene Songs zu speichern. Ich denke, ich habe den HTML- und C# -Code richtig gemacht, aber es wirft mir immer wieder einen Fehler auf, der besagt, dass FileUpload1 im aktuellen Kontext nicht existiert. Sie können eine Navigationsleiste verwenden, um den Kontext zu wechseln. Mein C# -Code ist wie folgt.FileUpload1 existiert nicht im aktuellen Kontext

using System; 
using System.Collections.Generic; 
using System.Web; 
using System.Xml.Linq; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using MySql; 
using MySql.Data; 
using MySql.Data.MySqlClient; 
using System.IO; 
using System.Text; 
using System.Web.UI.WebControls.WebParts; 
using System.Configuration; 

public partial class Default3 : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 

} 
protected void btnUpload_Click(object sender, EventArgs e) 
{ 

    using (BinaryReader br = new BinaryReader(FileUpload1.PostedFile.InputStream)) 
    { 
     byte[] bytes = br.ReadBytes((int)FileUpload1.PostedFile.InputStream.Length); 
     string strConnString = "server=localhost;user id=root;database=music;persistsecurityinfo=True"; 
     using (MySqlConnection con = new MySqlConnection(strConnString)) 
     { 
      using (MySqlCommand command = new MySqlCommand()) 
      { 
       con.Open(); 


       string SQL = "insert into tblFiles(Name, ContentType, Data) values (@Name, @ContentType, @Data)"; 
       command.CommandText = SQL; 
       command.Parameters.AddWithValue("@Name", Path.GetFileName(FileUpload1.PostedFile.FileName)); 
       command.Parameters.AddWithValue("@ContentType", "audio/mpeg3"); 
       command.Parameters.AddWithValue("@Data", bytes); 
       command.Connection = con; 
       command.ExecuteNonQuery(); 
       con.Close(); 
      } 
     } 
    } 
    Response.Redirect(Request.Url.AbsoluteUri); 

} 

} 

Hier ist mein HTML für die Website:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Music.aspx.cs" Inherits="Default3" %> 
<asp:Content ID="music" runat="server" ContentPlaceHolderID ="ContentPlaceHolder1"> 
<asp:FileUpload ID="FileUpload1" runat="server"/> 
<asp:Button ID="btnUpload" runat="server" Text="Upload" 
    onclick="btnUpload_Click"/> 
<hr/> 
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" RowStyle-BackColor="#A1DCF2" Font-Names = "Arial" Font-Size = "10pt" 
HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"> 
    <Columns> 
        <asp:BoundField DataField="Name" HeaderText="FileName"/> 
        <asp:TemplateField> 
            <ItemTemplate> 
                <object type="application/x-shockwave-flash" data='dewplayer-vol.swf?mp3=File.ashx?Id=<%# Eval("Id") %>' 
                    width="240" height="20" id="dewplayer"> 
                    <param name="wmode" value="transparent"/> 
                    <param name="movie" value='dewplayer-vol.swf?mp3=File.ashx?Id=<%# Eval("Id") %>'/> 
                </object> 
            </ItemTemplate> 
       </asp:TemplateField> 
        <asp:HyperLinkField DataNavigateUrlFields="Id" Text = "Download" DataNavigateUrlFormatString = "~/File.ashx?Id={0}" HeaderText="Download"/> 
   </Columns> 
</asp:GridView> 
    </asp:Content> 
+1

Offtopic: Ich würde zuerst vorschlagen, das Flash-Objekt loszuwerden und HTML5 dafür zu verwenden. Sehen Sie sich https://www.w3schools.com/html/html5_audio.asp an. – DogeAmazed

+0

Ihr Code sieht OK aus. Versuchen Sie, das Control erneut zu entfernen und hinzuzufügen. Manchmal, wenn Code von irgendwo kopiert wird, ist VS etwas verwirrt und fügt das Steuerelement der Designer-Datei nicht hinzu. – VDWWD

+0

Überprüfen Sie, dass Sie keine weitere partielle Klassendefinition mit dem Namen 'Default3' erhalten haben. –

Antwort

0

Ihr Code hinter definiert eine partielle Klasse "Default3". Ich nehme an, Ihre Aspx-Seite heißt "Default3", und Visual Studio hat den Code generiert, um die Elemente in dieser Aspx-Seite zu instanziieren. Dieser generierte Code ist auch eine partielle Klasse "Default3", aber Sie werden in diesem generierten Code feststellen, dass die partielle Klasse unter einem Namensraum definiert ist. Ihr Code dahinter definiert den Rest dieser Klasse nicht unter einem Namespace, sodass er nicht auf dieselben Objekte zugreifen kann. Sieht so aus, als hätten Sie irgendwann die Namespace-Spezifikation aus Ihrem Code gelöscht.

Verwandte Themen