#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    May 2013
    Posts
    2
    Rep Power
    0

    Question [SOLVED] Why is my ASP Page.Request.Files[] always empty?


    We're 4 guys making a website for our final school project. We need to allow a user to upload a pdf. We're using Visual Studio 2012, and we have a Master page set up, and the whole login-process and user-creation works. We're using jQuery, and also jQueryMobile because the site needs to work for phones as well, and this makes it a bit easier.

    But when we want to check the files the client is trying to upload in our code behind, Request.Files is always empty. Why is this?

    I have the enctype set in the form I'm using, so I should be fine. It looks like the page reloads when I click the upload-button, and the text-field in the file-input gets cleared. Then after this, it runs the code behind method.

    The output we get is:

    HALLOOOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    In the house
    Files[] size is 0



    The Master page that looks like this:

    Code:
            <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Main.Master.cs" Inherits="SendEtBrev.Main" %>
        
        <!DOCTYPE html>
        
        <html xmlns="http://www.w3.org/1999/xhtml">
          <head runat="server">
              <title>SendEtBrev.dk</title>
        
              <meta http-equiv="Pragma" content="no-cache" />
        	    <meta http-equiv="Expires" content="-1" />
        	    <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;" />
        	    <meta name="MobileOptimized" content="width" />
        	    <meta name="HandheldFriendly" content="true" />
        
                <link rel="stylesheet" type="text/css" href="/Styles/reset.css" />
        	    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        	    <script src="/Js/fixes.js"></script>
        	    <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
        	    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
        	    <link rel="stylesheet" type="text/css" href="/Styles/sendetbrev.css" />   
                
              <asp:ContentPlaceHolder ID="head" runat="server" />
              
            
          </head>
          <body>
              <header>
                <div class="headerbox">
                  <div class="headerlogo">
                    <img class="autosizedimage" src="/Billeder/Logo.png" />
                  </div>
                      <asp:LoginView ID="LoginViewMenu" runat="server">
                         <LoggedInTemplate>                    
                           <a href="/Account/Minkonto.aspx">Min konto</a>
                           <a href="/Account/Logout.aspx">Log ud</a>               
                         </LoggedInTemplate>
                      </asp:LoginView>
                  <br />
                </div>
                
              </header>
        
              <br />
              <br />
              <div>
                  <asp:ContentPlaceHolder ID="centercontent" runat="server" />
              </div>
              <footer>
        
              </footer>
          </body>
        </html>

    My aspx content code located in the Side1Uploadfil.aspx file is this:


    Code:
        <%@ Page Language="C#" MasterPageFile="~/Main.Master" ValidateRequest = "False" AutoEventWireup="true" CodeBehind="Side1Uploadfil.aspx.cs" Inherits="SendEtBrev.SendBrev.Side1Uploadfil" %>
        
        <asp:Content ID="Content1" ContentPlaceHolderID="centercontent" runat="server" >
          
          <asp:Literal ID="introText" runat="server"/>
          <br />
          <br />
          <asp:Literal ID="AccepteredeFormater" runat="server" />
          <br />
          .pdf<br />
          
            
        
          <!-- vises kun hvis der er en fejlbesked ved upload -->
          <asp:Literal ID="errorMessage" runat="server" EnableViewState="false" /><br />
        
          
            
            Select a file to upload:
              <form id="form1" name="form1" method="post" runat="server" enctype="multipart/form-data" >
                  <input type="file" accept="*.pdf" id="fileUploadControl" name="fileUploadControl" runat="server" />
                <asp:Button runat="server" ID="btnUpload" OnClick="btnUploadClick" Text="Upload" />
                
                <br/><br/>
            
            <br />
              </form>
          <asp:Button ID="FortsaetKnap" runat="server" data-role="none" CssClass="knap1" Visible="False"
              OnClientClick="javascript:location.replace('/SendBrev/Side2Modtager.aspx');" /><br />
            
        
        </asp:Content>

    And my Side1Uploadfil.aspx.cs code behind is this:

    Code:
        using System;
        using System.Collections.Generic;
        using System.Diagnostics;
        using System.Linq;
        using System.Web;
        using System.Web.Script.Services;
        using System.Web.UI;
        using System.Web.UI.HtmlControls;
        using iTextSharp.text.pdf;
        using iTextSharp.text.xml;
        using System.Text.RegularExpressions;
        using System.Web.UI.WebControls;
        using System.IO;
        
        namespace SendEtBrev.SendBrev
        {
            public partial class Side1Uploadfil : System.Web.UI.Page
            {
        
                protected void Page_Load(object sender, EventArgs e)
                {
                    introText.Text = "Du er nu klar til at sende et brev.";
                    AccepteredeFormater.Text = "Følgende filformater accepteres:";
                    FortsaetKnap.Text = "Fortsæt";
                    btnUpload.Text = "Upload";
                }
        
                protected void btnUploadClick(object sender, EventArgs e)
                {
                    Response.Write("HALLOOOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                    Console.WriteLine("HALLOOOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                    Debug.WriteLine("HALLOOOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
        
                    if (fileUploadControl != null)
                    {
                        Response.Write("In the house");
                        Console.WriteLine("In the house");
                        Debug.WriteLine("In the house");
                    }
        
                    if (Page.Request.Files.Count > 0)
                    {
                        {
                            //Get the first file. There could be multiple if muti upload is supported
                            string fileName = Page.Request.Files[0].FileName;
        
                            //Some validation
                            if (Page.Request.Files[0].ContentLength > 1 && !string.IsNullOrEmpty(fileName))
                            {
                                FileValidator(Page.Request.Files[0].InputStream);
                            }
                        }
                    }
                    else
                    {
                        Debug.WriteLine("Files[] size is 0");
                        Console.WriteLine("Files[] size is 0");
                        Response.Write("Files[] size is 0");
                    }
                    
                }
        
                protected void FileValidator(Stream myFileStream)
                {
                    Debug.WriteLine("Running FileValidator...");
                    Console.WriteLine("Running FileValidator...");
                    Response.Write("Running FileValidator...");
                    if (myFileStream != null)
                    {
                        using (StreamReader sr = new StreamReader(myFileStream))
                        {
                            Regex regex = new Regex(@"/Type\s*/Page[^s]");
                            MatchCollection matches = regex.Matches(sr.ReadToEnd());
                            Console.Write("PDF'en har " + matches.Count + " sider");
                            Debug.Write("PDF'en har " + matches.Count + " sider");
                            Response.Write("PDF'en har " + matches.Count + " sider");
                            if (matches.Count > 0)
                            {
                                FortsaetKnap.Visible = true;
                            }
                        }
                    }
                    else
                    {
                        Debug.WriteLine("Filestream is null");
                        Console.WriteLine("Filesream is null");
                        Response.Write("Filestream is null");
                        FortsaetKnap.Visible = false;
                    }
                }
            }
        }
    Last edited by Ultroman; May 16th, 2013 at 03:18 PM. Reason: Solved
  2. #2
  3. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    May 2013
    Posts
    2
    Rep Power
    0
    Solved by a guy at StackOverflow.

    Problem was I needed to specify data-ajax="false" on my form.

IMN logo majestic logo threadwatch logo seochat tools logo