2016-05-25 28 views
-1

HTMLフォームを使用してASPXでファイルをアップロードしようとしていて、コードビハインドでファイルをキャッチしようとしています。asp.netでファイルをアップロードできません

マイHTMLform今

<form id="form1" enctype="multipart/form-data"> 
     <input type="file" id="myFile" name="myFile" /> 
     <asp:Button runat="server" ID="btnUpload" OnClick="btnUploadClick" Text="Upload" /> 
</form> 

そして、分離コードの私の方法です:

protected void btnUploadClick(object sender, EventArgs e) 
{ 
    HttpPostedFile file = Request.Files["myFile"]; 

    //check file was submitted 
    if (file != null && file.ContentLength > 0) 
    { 
     string title = "title"; 
     string message = "this worked"; 
     ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), title, "alert('" + message + "');", true); 
     string fname = Path.GetFileName(file.FileName); 
     file.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", fname))); 
    } 
    else 
    { 
     string title = "title"; 
     string message = "nothing happened"; 
     ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), title, "alert('" + message + "');", true); 
    } 
} 

私は私のHTMLフォームを送信するたびだから、私はいつも何も起こらなかった警告を取得します。助言がありますか?

おかげ

+0

を取り除く:あなたはそれを追加すると予想されるように、それが動作するはず? – David

答えて

1

あなたの既存のコードが実際に実際に動作するようにコードのためにあなたが<form>要素にrunat="server"タグを持っている必要があります。

<form id="form1" enctype="multipart/form-data" runat="server"> 
    <!-- Content --> 
</form> 

マスターページとネストされたがしかし

フォームあなたのコメントに基づいて、マスターページ内に既に親の<form>要素があるようです。そして、あなたはそれがあなたのマスターページによって生成された1に該当しますと、あなたの内側の子フォームを無視することができるはず

<!-- This should be your Master Page form --> 
<form id="form1" enctype="multipart/form-data" runat="server"> 
    <!-- Content --> 
</form> 

:その場合は、その後、代わりにその親<form>要素にごenctype="multipart/form-data"属性を追加することを検討。あなたはonclickの機能を持っているように、そのフォームタグを必要とする理由がない限り、必要ではない、あなたのformタグの

enter image description here

+0

runat = "server"を追加すると問題が発生します。「Aページにはサーバーサイドフォームタグは1つしかありません」というエラーが表示されます。これは私のsite.Masterがフォーム(デフォルトのもの)を持っているからです。あなたはこれを回避することを知っていますか? –

+0

それは大丈夫でしょう。他の場所で定義したことを示すコードはありませんでした。この子の '

'要素を置き換えて、 'runat =" server "タグが入っているメインの' 'に' enctype = "multipart/form-data"を設定してください。 –

+0

それはそれを修正しました!どうもありがとうございます! –

関連する問題