2017-10-03 12 views
0

私は、ユーザーが曲をアップロードし、アップロードされた曲をダウンロードできるサイトを作成しようとしています。私はアップロードされた曲を保存するために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> 
+1

Offtopic:まず、Flashオブジェクトを取り除き、HTML5を使用することをお勧めします。 https://www.w3schools.com/html/html5_audio.asp – DogeAmazed

+0

コードを確認してください。コントロールを削除してもう一度追加してみてください。ときどきコードがどこかからコピーされると、VS getはちょっと混乱し、コントロールをデザイナーファイルに追加しません。 – VDWWD

+0

名前 'Default3'を共有する別の部分クラス定義がないことを確認してください。 –

答えて

0

あなたのコードが背後にある部分クラス "Default3" を定義します。あなたのaspxページが "Default3"という名前で、Visual Studioがaspxページの要素をインスタンス化するコードを生成したと仮定します。生成されたコードも部分クラス "Default3"ですが、生成されたコードでは部分クラスが名前空間の下で定義されています。コードビハインドは、そのクラスの残りの部分を任意の名前空間で定義しないため、同じオブジェクトにアクセスすることはできません。ある時点で、あなたのコードの中から名前空間の仕様を削除したような感じです。

関連する問題