6

I am trying to make a server page (C#, asp.net 2.0+) to save an uploaded file from another page.

Specifically, I have an HTML page with a

<form action="upload.aspx"> 

and I can't figure out how to handle saving the file on the server in upload.aspx.

I found a few examples (one being: http://msdn.microsoft.com/en-us/library/aa479405.aspx) but that requires the <input type=file> element to be on the same page.

I am having difficulties with grabbing the posted file on my upload.aspx page.

Anyone have any pointers? How can I grab a posted file in aspx and save it to the server when the file is posted from another page?

Many thanks, Brett

6 Answers 6

13

1.Create Uploadfile.aspx, code as below:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Uploadfile.aspx.cs" Inherits="Uploadfile" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>File Upload Control</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:FileUpload  runat="server" ID="fuSample" />
    <asp:Button  runat="server" ID="btnUpload" Text="Upload"
            onclick="btnUpload_Click" />
            <asp:Label runat="server" ID="lblMessage" Text=""></asp:Label>
    </div>
    </form>
</body>
</html>

2.create Uploadfile.aspx.cs, code as below:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Uploadfile : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
  {
  }
  protected void btnUpload_Click(object sender, EventArgs e)
  {
    //Files is folder Name, make sure it exists
    fuSample.SaveAs(Server.MapPath("/Files") + "//" + fuSample.FileName);
    lblMessage.Text = "File Successfully Uploaded";
  }
}

3.create a new file: demo.html, code shown as below, (embed the Uploadfile.aspx in Your Html page using iframe)

<h3>Demo</h3>
<iframe height="40" width="700" src="Uploadfile.aspx">
</iframe>

4.visit /demo.html, now you can be able to upload your file from html itself,by using UploadFiles.aspx

enter image description here

Sign up to request clarification or add additional context in comments.

Comments

1

Use code similar to this and then write it out to disk (using, say, FileStream)

HttpFileCollection MyFileCollection;
 HttpPostedFile MyFile;
 int FileLen;
 System.IO.Stream MyStream;

 MyFileCollection = Request.Files;
 MyFile = MyFileCollection[0];

 FileLen = MyFile.ContentLength;
 byte[] input = new byte[FileLen];

 // Initialize the stream.
 MyStream = MyFile.InputStream;

 // Read the file into the byte array.
 MyStream.Read(input, 0, FileLen);

http://msdn.microsoft.com/en-us/library/system.web.httppostedfile.inputstream%28VS.71%29.aspx

Comments

1

You can't do it without the <input type=file">

<form action="upload.aspx"> doesn't send a file tells the server where to send the request to.

Comments

0

I made a small test case:

  1. Uploader.aspx markup:

    <form id="form1" runat="server">
    <div>
        <asp:FileUpload runat="server" ID="fuTest" /><br />
        <asp:Button runat="server" ID="btnUpload" Text="Upload" PostBackUrl="~/Uploading/Upload.aspx" />
    </div>
    </form>
    
  2. Codebehind from Upload.aspx:

    protected void Page_Load(object sender, EventArgs e)
    {
        FileUpload fu =  PreviousPage.FindControl("fuTest") as FileUpload;
        if (fu != null)
        {
            int length = fu.PostedFile.ContentLength;
        }
    }
    

The PostBackUrl property of the button posts it to the Upload.aspx page. There you can use the PreviousPage property of the Page class to find the control from the previous page, cast it to FileUpload, and retrieve what you want from it.

Comments

0

namespace A8
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        class Proizvod {
            public string ceo_red, ime, proizvodjac, ram, tip, kamera,slika, ekran,sifra, cena;
            

            public Proizvod(string x) {
                ceo_red = x;
                slika = x.Split(',')[0];
                sifra = x.Split(',')[1];
                ime = x.Split(',')[2];
                proizvodjac = x.Split(',')[3];
                ram = x.Split(',')[4];
                tip = x.Split(',')[5];
                kamera = x.Split(',')[6];
                ekran = x.Split(',')[7];
                cena = x.Split(',')[8];
            }
        
        }
        List<Proizvod> proizvodi = new List<Proizvod>();
        protected void Page_Load(object sender, EventArgs e)
        {
                
            StreamReader sr = new StreamReader(@"F:\dji\A8\A8\TextFile1.txt");

            for (int i = 0; i < 5; i++)
            {
                proizvodi.Add(new Proizvod(sr.ReadLine()));
            }
            for (int i = 0; i < proizvodi.Count; i++)
            {
                bool isti = false;
                for (int j = 0; j < DropDownList1.Items.Count; j++)
                {
                    if (proizvodi[i].proizvodjac == DropDownList1.Items[j].Text) isti = true;
                }
                if (!isti) DropDownList1.Items.Add(proizvodi[i].proizvodjac);

                isti = false;
                for (int j = 0; j < DropDownList2.Items.Count; j++)
                {
                    if (proizvodi[i].ram == DropDownList2.Items[j].Text) isti = true;
                }
                if (!isti) DropDownList2.Items.Add(proizvodi[i].ram);

                isti = false;
                for (int j = 0; j < DropDownList3.Items.Count; j++)
                {
                    if (proizvodi[i].tip == DropDownList3.Items[j].Text) isti = true;
                }
                if (!isti) DropDownList3.Items.Add(proizvodi[i].tip);

                isti = false;
                for (int j = 0; j < DropDownList4.Items.Count; j++)
                {
                    if (proizvodi[i].kamera == DropDownList4.Items[j].Text) isti = true;
                }
                if (!isti) DropDownList4.Items.Add(proizvodi[i].kamera);

                isti = false;
                for (int j = 0; j < DropDownList5.Items.Count; j++)
                {
                    if (proizvodi[i].ekran == DropDownList5.Items[j].Text) isti = true;
                }
                if (!isti) DropDownList5.Items.Add(proizvodi[i].ekran);
            }
            Table1.Visible = false;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            List<Proizvod> trazeni = new List<Proizvod>();
            for (int i = 0; i < proizvodi.Count; i++)
            {
                if (proizvodi[i].proizvodjac == DropDownList1.Text && proizvodi[i].ram == DropDownList2.Text && proizvodi[i].tip == DropDownList3.Text && proizvodi[i].kamera == DropDownList4.Text && proizvodi[i].ekran == DropDownList5.Text)
                {
                    
                    trazeni.Add(proizvodi[i]);
                }
            }
            for (int i = 0; i < trazeni.Count; i++)
            {
                TableRow tr = new TableRow();
                for (int j = 0; j < 9; j++)
                {
                    TableCell tc = new TableCell();
                    
                    tc.Text = trazeni[i].ceo_red.Split(',')[j];
                    tr.Cells.Add(tc);
                }
                Table1.Rows.Add(tr);
            }
            Table1.Visible = true;
        }
    }
}

Comments

0

Try this method in your button to upload file:

protected void FileUpload_Click(object sender, EventArgs e)
    {
        if ((FileUpload.PostedFile != null) && (FileUpload.PostedFile.ContentLength > 0))
        {
            string fn = Path.GetFileName(FileUpload.PostedFile.FileName);
            string SaveLocation = Server.MapPath("upload") + "\\" + fn;
            try
            {
                FileUpload.PostedFile.SaveAs(SaveLocation);
                FileUploadStatus.Text = "File Uploaded Successfully";

                try
                {
                    string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                    string[] text = File.ReadAllLines(SaveLocation);
                    File.WriteAllLines(path + "/WriteLines.txt", text);
                    Label2.Text = "File Uploaded Succesfully";
                }
                catch (Exception ex)
                {
                    FileUploadStatus.Text = "Error: " + "ex.Message";
                }
             
            }
            catch (Exception ex)
            {
                FileUploadStatus.Text = "Error: " + ex.Message;
            }
        }
        else
        {
            FileUploadStatus.Text = "Select file to upload";
        }
    }

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.