2010-07-02 5 views
6

Я пытаюсь сделать страницу сервера (C#, asp.net 2.0+), чтобы сохранить загруженный файл с другой страницы.Загрузка файла ASP.NET

В частности, У меня есть страница HTML с

<form action="upload.aspx"> 

, и я не могу понять, как обращаться с сохранением файла на сервере в upload.aspx.

Я нашел несколько примеров (один из которых: http://msdn.microsoft.com/en-us/library/aa479405.aspx) , но для этого требуется, чтобы элемент <input type=file> находился на этой же странице.

У меня возникли трудности с захватом опубликованного файла на моей странице upload.aspx.

У кого-нибудь есть указатели? Как я могу захватить опубликованный файл в aspx и сохранить его на сервере, когда файл отправлен с другой страницы?

Большое спасибо, Brett

ответ

10

1.Create Uploadfile.aspx

2.Embed Uploadfile.aspx на странице сайтов с помощью IFRAME

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

Теперь вы можете быть возможность загрузить файл из самого html, используя UploadFiles.aspx.

1

Используйте код, схожий с этим, а затем записать его на диск (с помощью, скажем, 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

1

Вы не можете это сделать без <input type=file">

<form action="upload.aspx"> не отправляет файл, на котором сервер указывает, куда отправить запрос до.

0

Я сделал небольшой тестовый случай:

  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. CodeBehind из 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; 
        } 
    } 
    

Свойство PostBackUrl кнопки помещает его в Upload.aspx стр. Там вы можете использовать свойство PreviousPage класса Page, чтобы найти элемент управления с предыдущей страницы, отбросить его в FileUpload и извлечь из него то, что вы хотите.

Смежные вопросы