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>
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
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
Überprüfen Sie, dass Sie keine weitere partielle Klassendefinition mit dem Namen 'Default3' erhalten haben. –