繁体   English   中英

ASP.NET 文件上传

[英]ASP.NET File Upload

我正在尝试制作一个服务器页面(C#,asp.net 2.0+)来保存从另一个页面上传的文件。

具体来说,我有一个 HTML 页面

<form action="upload.aspx"> 

而且我不知道如何处理在upload.aspx 中保存服务器上的文件。

我找到了一些示例(一个是: http://msdn.microsoft.com/en-us/library/aa479405.aspx ),但这需要<input type=file>元素位于同一页面上。

我无法在我的 upload.aspx 页面上抓取已发布的文件。

有人有任何指示吗? 当文件从另一个页面发布时,如何在 aspx 中获取发布的文件并将其保存到服务器?

非常感谢,布雷特

1.创建Uploadfile.aspx

2.使用iframe在您的Html页面中嵌入Uploadfile.aspx

    <%@ 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>

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
        fuSample.SaveAs(Server.MapPath("Files") + "//" + fuSample.FileName);
        lblMessage.Text = "File Successfully Uploaded";
    }
}

然后将您的aspx页面嵌入Html中,如下所示,

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

现在,您可以使用UploadFiles.aspx从html本身上传文件。

使用与此类似的代码然后将其写入磁盘(使用,例如,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

没有<input type=file">你不能这样做

<form action="upload.aspx">不发送文件告诉服务器将请求发送到哪里。

我做了一个小测试案例:

  1. Uploader.aspx标记:

     <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. 来自Upload.aspx的Codebehind:

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

按钮的PostBackUrl属性将其发布到Upload.aspx页面。 在那里,您可以使用Page类的PreviousPage属性从上一页中查找控件,将其强制转换为FileUpload,并从中检索您想要的内容。

 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; } } } 

在您的按钮中尝试此方法以上传文件:

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";
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM