views:

186

answers:

2

I have the following form

<form id="upload" method="post" EncType="Multipart/Form-Data" action="reciver.aspx">
        <input type="file" id="upload" name="upload" /><br/>
        <input type="submit" id="save" class="button" value="Save" />            
</form>

When I look at the file collection it is empty.

HttpFileCollection Files = HttpContext.Current.Request.Files;

How do I read the uploaded file content without using ASP.NET server side control?

+1  A: 

Why do you need to get the currect httpcontext, just use the page's one, look at this example:

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

//c#
protected void btnUploadClick(object sender, EventArgs e)
{
    HttpPostedFile file = Request.Files["myFile"];
    if (file != null && file.ContentLength )
    {
        string fname = Path.GetFileName(file.FileName);
        file.SaveAs(Server.MapPath(Path.Combine("~/App_Data/", fname)));
    }
}

The example code is from http://stackoverflow.com/questions/569565/uploading-files-in-asp-net-without-using-the-fileupload-server-control

Btw, you don't need to use a server side button control. You can add the above code to the page load where you check if the current state is a postback.

Good luck!

Mouhannad
A: 

Here is my final solution. Attaching the file to an email.

//Get the files submitted form object
            HttpFileCollection Files = HttpContext.Current.Request.Files;

            //Get the first file. There could be multiple if muti upload is supported
            string fileName = Files[0].FileName;

            //Some validation
            if(Files.Count == 1 && Files[0].ContentLength > 1 && !string.IsNullOrEmpty(fileName))
            { 
                //Get the input stream and file name and create the email attachment
                Attachment myAttachment = new Attachment(Files[0].InputStream, fileName);

                //Send email
                MailMessage msg = new MailMessage(new MailAddress("[email protected]", "name"), new MailAddress("[email protected]", "name"));
                msg.Subject = "Test";
                msg.Body = "Test";
                msg.IsBodyHtml = true;
                msg.Attachments.Add(myAttachment);

                SmtpClient client = new SmtpClient("smtp");
                client.Send(msg);
            }
Deepfreezed