私は、ユーザーが曲をアップロードし、アップロードされた曲をダウンロードできるサイトを作成しようとしています。私はアップロードされた曲を保存するためにMySQLを使用しています。私はHTMLとC#のコードが正しいと思いますが、現在のコンテキストにFileUpload1が存在しないというエラーが表示され続けます。ナビゲーションバーを使用してコンテキストを切り替えることができます。私のC#コードは以下の通りです。ここでFileUpload1は現在のコンテキストに存在しません
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);
}
}
は、サイトのための私のHTMLです:
<%@ 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:まず、Flashオブジェクトを取り除き、HTML5を使用することをお勧めします。 https://www.w3schools.com/html/html5_audio.asp – DogeAmazed
コードを確認してください。コントロールを削除してもう一度追加してみてください。ときどきコードがどこかからコピーされると、VS getはちょっと混乱し、コントロールをデザイナーファイルに追加しません。 – VDWWD
名前 'Default3'を共有する別の部分クラス定義がないことを確認してください。 –